mirror of
https://github.com/documenso/documenso.git
synced 2025-11-23 13:11:32 +10:00
Merge branch 'main' into feat/auto-placing-fields
This commit is contained in:
@ -11,7 +11,7 @@ export const validateNumberField = (
|
||||
|
||||
const { minValue, maxValue, readOnly, required, numberFormat, fontSize } = fieldMeta || {};
|
||||
|
||||
if (numberFormat) {
|
||||
if (numberFormat && value.length > 0) {
|
||||
const foundRegex = numberFormatValues.find((item) => item.value === numberFormat)?.regex;
|
||||
|
||||
if (!foundRegex) {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
|
||||
import { zodResolver } from '@hookform/resolvers/zod';
|
||||
import type { Recipient } from '@prisma/client';
|
||||
import type { Field, Recipient } from '@prisma/client';
|
||||
import { FieldType } from '@prisma/client';
|
||||
import { useFieldArray, useForm } from 'react-hook-form';
|
||||
import { z } from 'zod';
|
||||
@ -63,6 +63,8 @@ type UseEditorFieldsResponse = {
|
||||
// Selected recipient
|
||||
selectedRecipient: Recipient | null;
|
||||
setSelectedRecipient: (recipientId: number | null) => void;
|
||||
|
||||
resetForm: (fields?: Field[]) => void;
|
||||
};
|
||||
|
||||
export const useEditorFields = ({
|
||||
@ -72,24 +74,30 @@ export const useEditorFields = ({
|
||||
const [selectedFieldFormId, setSelectedFieldFormId] = useState<string | null>(null);
|
||||
const [selectedRecipientId, setSelectedRecipientId] = useState<number | null>(null);
|
||||
|
||||
const generateDefaultValues = (fields?: Field[]) => {
|
||||
const formFields = (fields || envelope.fields).map(
|
||||
(field): TLocalField => ({
|
||||
id: field.id,
|
||||
formId: nanoid(),
|
||||
envelopeItemId: field.envelopeItemId,
|
||||
page: field.page,
|
||||
type: field.type,
|
||||
positionX: Number(field.positionX),
|
||||
positionY: Number(field.positionY),
|
||||
width: Number(field.width),
|
||||
height: Number(field.height),
|
||||
recipientId: field.recipientId,
|
||||
fieldMeta: field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : undefined,
|
||||
}),
|
||||
);
|
||||
|
||||
return {
|
||||
fields: formFields,
|
||||
};
|
||||
};
|
||||
|
||||
const form = useForm<TEditorFieldsFormSchema>({
|
||||
defaultValues: {
|
||||
fields: envelope.fields.map(
|
||||
(field): TLocalField => ({
|
||||
id: field.id,
|
||||
formId: nanoid(),
|
||||
envelopeItemId: field.envelopeItemId,
|
||||
page: field.page,
|
||||
type: field.type,
|
||||
positionX: Number(field.positionX),
|
||||
positionY: Number(field.positionY),
|
||||
width: Number(field.width),
|
||||
height: Number(field.height),
|
||||
recipientId: field.recipientId,
|
||||
fieldMeta: field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : undefined,
|
||||
}),
|
||||
),
|
||||
},
|
||||
defaultValues: generateDefaultValues(),
|
||||
resolver: zodResolver(ZEditorFieldsFormSchema),
|
||||
});
|
||||
|
||||
@ -162,10 +170,15 @@ export const useEditorFields = ({
|
||||
);
|
||||
|
||||
const setFieldId = (formId: string, id: number) => {
|
||||
const index = localFields.findIndex((field) => field.formId === formId);
|
||||
const { fields } = form.getValues();
|
||||
|
||||
const index = fields.findIndex((field) => field.formId === formId);
|
||||
|
||||
if (index !== -1) {
|
||||
form.setValue(`fields.${index}.id`, id);
|
||||
update(index, {
|
||||
...fields[index],
|
||||
id,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@ -272,6 +285,10 @@ export const useEditorFields = ({
|
||||
setSelectedRecipientId(foundRecipient?.id ?? null);
|
||||
};
|
||||
|
||||
const resetForm = (fields?: Field[]) => {
|
||||
form.reset(generateDefaultValues(fields));
|
||||
};
|
||||
|
||||
return {
|
||||
// Core state
|
||||
localFields,
|
||||
@ -295,6 +312,8 @@ export const useEditorFields = ({
|
||||
// Selected recipient
|
||||
selectedRecipient,
|
||||
setSelectedRecipient,
|
||||
|
||||
resetForm,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@ -107,6 +107,10 @@ export function usePageRenderer(renderFunction: RenderFunction) {
|
||||
stage: stage.current,
|
||||
pageLayer: pageLayer.current,
|
||||
});
|
||||
|
||||
void document.fonts.ready.then(function () {
|
||||
pageLayer.current?.batchDraw();
|
||||
});
|
||||
});
|
||||
|
||||
return () => {
|
||||
|
||||
@ -30,6 +30,8 @@ type EnvelopeRenderItem = TEnvelope['envelopeItems'][number];
|
||||
type EnvelopeRenderProviderValue = {
|
||||
getPdfBuffer: (envelopeItemId: string) => FileData | null;
|
||||
envelopeItems: EnvelopeRenderItem[];
|
||||
envelopeStatus: TEnvelope['status'];
|
||||
envelopeType: TEnvelope['type'];
|
||||
currentEnvelopeItem: EnvelopeRenderItem | null;
|
||||
setCurrentEnvelopeItem: (envelopeItemId: string) => void;
|
||||
fields: Field[];
|
||||
@ -44,7 +46,7 @@ type EnvelopeRenderProviderValue = {
|
||||
interface EnvelopeRenderProviderProps {
|
||||
children: React.ReactNode;
|
||||
|
||||
envelope: Pick<TEnvelope, 'envelopeItems'>;
|
||||
envelope: Pick<TEnvelope, 'envelopeItems' | 'status' | 'type'>;
|
||||
|
||||
/**
|
||||
* Optional fields which are passed down to renderers for custom rendering needs.
|
||||
@ -100,7 +102,7 @@ export const EnvelopeRenderProvider = ({
|
||||
// Indexed by documentDataId.
|
||||
const [files, setFiles] = useState<Record<string, FileData>>({});
|
||||
|
||||
const [currentItem, setItem] = useState<EnvelopeRenderItem | null>(null);
|
||||
const [currentItem, setCurrentItem] = useState<EnvelopeRenderItem | null>(null);
|
||||
|
||||
const [renderError, setRenderError] = useState<boolean>(false);
|
||||
|
||||
@ -163,11 +165,15 @@ export const EnvelopeRenderProvider = ({
|
||||
const setCurrentEnvelopeItem = (envelopeItemId: string) => {
|
||||
const foundItem = envelope.envelopeItems.find((item) => item.id === envelopeItemId);
|
||||
|
||||
setItem(foundItem ?? null);
|
||||
setCurrentItem(foundItem ?? null);
|
||||
};
|
||||
|
||||
// Set the selected item to the first item if none is set.
|
||||
useEffect(() => {
|
||||
if (currentItem && !envelopeItems.some((item) => item.id === currentItem.id)) {
|
||||
setCurrentItem(null);
|
||||
}
|
||||
|
||||
if (!currentItem && envelopeItems.length > 0) {
|
||||
setCurrentEnvelopeItem(envelopeItems[0].id);
|
||||
}
|
||||
@ -203,6 +209,8 @@ export const EnvelopeRenderProvider = ({
|
||||
value={{
|
||||
getPdfBuffer,
|
||||
envelopeItems,
|
||||
envelopeStatus: envelope.status,
|
||||
envelopeType: envelope.type,
|
||||
currentEnvelopeItem: currentItem,
|
||||
setCurrentEnvelopeItem,
|
||||
fields: fields ?? [],
|
||||
|
||||
@ -15,5 +15,3 @@ export const API_V2_BETA_URL = '/api/v2-beta';
|
||||
export const API_V2_URL = '/api/v2';
|
||||
|
||||
export const SUPPORT_EMAIL = env('NEXT_PUBLIC_SUPPORT_EMAIL') ?? 'support@documenso.com';
|
||||
|
||||
export const IS_ENVELOPES_ENABLED = env('NEXT_PUBLIC_FEATURE_ENVELOPES_ENABLED') === 'true';
|
||||
|
||||
@ -51,21 +51,21 @@ export const DOCUMENT_SIGNATURE_TYPES = {
|
||||
[DocumentSignatureType.DRAW]: {
|
||||
label: msg({
|
||||
message: `Draw`,
|
||||
context: `Draw signatute type`,
|
||||
context: `Draw signature`,
|
||||
}),
|
||||
value: DocumentSignatureType.DRAW,
|
||||
},
|
||||
[DocumentSignatureType.TYPE]: {
|
||||
label: msg({
|
||||
message: `Type`,
|
||||
context: `Type signatute type`,
|
||||
context: `Type signature`,
|
||||
}),
|
||||
value: DocumentSignatureType.TYPE,
|
||||
},
|
||||
[DocumentSignatureType.UPLOAD]: {
|
||||
label: msg({
|
||||
message: `Upload`,
|
||||
context: `Upload signatute type`,
|
||||
context: `Upload signature`,
|
||||
}),
|
||||
value: DocumentSignatureType.UPLOAD,
|
||||
},
|
||||
|
||||
@ -32,6 +32,7 @@ export type JobDefinition<Name extends string = string, Schema = any> = {
|
||||
name: string;
|
||||
version: string;
|
||||
enabled?: boolean;
|
||||
optimizeParallelism?: boolean;
|
||||
trigger: {
|
||||
name: Name;
|
||||
schema?: z.ZodType<Schema>;
|
||||
|
||||
@ -40,6 +40,7 @@ export class InngestJobProvider extends BaseJobProvider {
|
||||
{
|
||||
id: job.id,
|
||||
name: job.name,
|
||||
optimizeParallelism: job.optimizeParallelism ?? false,
|
||||
},
|
||||
{
|
||||
event: job.trigger.name,
|
||||
|
||||
@ -189,29 +189,65 @@ export const run = async ({
|
||||
settings,
|
||||
});
|
||||
|
||||
const newDocumentData = await Promise.all(
|
||||
envelopeItems.map(async (envelopeItem) =>
|
||||
io.runTask(`decorate-and-sign-envelope-item-${envelopeItem.id}`, async () => {
|
||||
const envelopeItemFields = envelope.envelopeItems.find(
|
||||
(item) => item.id === envelopeItem.id,
|
||||
)?.field;
|
||||
// !: The commented out code is our desired implementation but we're seemingly
|
||||
// !: running into issues with inngest parallelism in production.
|
||||
// !: Until this is resolved we will do this sequentially which is slower but
|
||||
// !: will actually work.
|
||||
// const decoratePromises: Array<Promise<{ oldDocumentDataId: string; newDocumentDataId: string }>> =
|
||||
// [];
|
||||
|
||||
if (!envelopeItemFields) {
|
||||
throw new Error(`Envelope item fields not found for envelope item ${envelopeItem.id}`);
|
||||
}
|
||||
// for (const envelopeItem of envelopeItems) {
|
||||
// const task = io.runTask(`decorate-${envelopeItem.id}`, async () => {
|
||||
// const envelopeItemFields = envelope.envelopeItems.find(
|
||||
// (item) => item.id === envelopeItem.id,
|
||||
// )?.field;
|
||||
|
||||
return decorateAndSignPdf({
|
||||
envelope,
|
||||
envelopeItem,
|
||||
envelopeItemFields,
|
||||
isRejected,
|
||||
rejectionReason,
|
||||
certificateData,
|
||||
auditLogData,
|
||||
});
|
||||
}),
|
||||
),
|
||||
);
|
||||
// if (!envelopeItemFields) {
|
||||
// throw new Error(`Envelope item fields not found for envelope item ${envelopeItem.id}`);
|
||||
// }
|
||||
|
||||
// return decorateAndSignPdf({
|
||||
// envelope,
|
||||
// envelopeItem,
|
||||
// envelopeItemFields,
|
||||
// isRejected,
|
||||
// rejectionReason,
|
||||
// certificateData,
|
||||
// auditLogData,
|
||||
// });
|
||||
// });
|
||||
|
||||
// decoratePromises.push(task);
|
||||
// }
|
||||
|
||||
// const newDocumentData = await Promise.all(decoratePromises);
|
||||
|
||||
// TODO: Remove once parallelization is working
|
||||
const newDocumentData: Array<{ oldDocumentDataId: string; newDocumentDataId: string }> = [];
|
||||
|
||||
for (const envelopeItem of envelopeItems) {
|
||||
const result = await io.runTask(`decorate-${envelopeItem.id}`, async () => {
|
||||
const envelopeItemFields = envelope.envelopeItems.find(
|
||||
(item) => item.id === envelopeItem.id,
|
||||
)?.field;
|
||||
|
||||
if (!envelopeItemFields) {
|
||||
throw new Error(`Envelope item fields not found for envelope item ${envelopeItem.id}`);
|
||||
}
|
||||
|
||||
return decorateAndSignPdf({
|
||||
envelope,
|
||||
envelopeItem,
|
||||
envelopeItemFields,
|
||||
isRejected,
|
||||
rejectionReason,
|
||||
certificateData,
|
||||
auditLogData,
|
||||
});
|
||||
});
|
||||
|
||||
newDocumentData.push(result);
|
||||
}
|
||||
|
||||
const postHog = PostHogServerClient();
|
||||
|
||||
|
||||
@ -18,6 +18,7 @@ export const SEAL_DOCUMENT_JOB_DEFINITION = {
|
||||
id: SEAL_DOCUMENT_JOB_DEFINITION_ID,
|
||||
name: 'Seal Document',
|
||||
version: '1.0.0',
|
||||
optimizeParallelism: true,
|
||||
trigger: {
|
||||
name: SEAL_DOCUMENT_JOB_DEFINITION_ID,
|
||||
schema: SEAL_DOCUMENT_JOB_DEFINITION_SCHEMA,
|
||||
|
||||
@ -0,0 +1,363 @@
|
||||
import type { DocumentStatus } from '@prisma/client';
|
||||
import { EnvelopeType } from '@prisma/client';
|
||||
|
||||
import type { DateRange } from '@documenso/lib/types/search-params';
|
||||
import { kyselyPrisma, sql } from '@documenso/prisma';
|
||||
|
||||
export type OrganisationSummary = {
|
||||
totalTeams: number;
|
||||
totalMembers: number;
|
||||
totalDocuments: number;
|
||||
activeDocuments: number;
|
||||
completedDocuments: number;
|
||||
volumeThisPeriod: number;
|
||||
volumeAllTime: number;
|
||||
};
|
||||
|
||||
export type OrganisationDetailedInsights = {
|
||||
teams: TeamInsights[];
|
||||
users: UserInsights[];
|
||||
documents: DocumentInsights[];
|
||||
totalPages: number;
|
||||
summary?: OrganisationSummary;
|
||||
};
|
||||
|
||||
export type TeamInsights = {
|
||||
id: number;
|
||||
name: string;
|
||||
memberCount: number;
|
||||
documentCount: number;
|
||||
createdAt: Date;
|
||||
};
|
||||
|
||||
export type UserInsights = {
|
||||
id: number;
|
||||
name: string;
|
||||
email: string;
|
||||
documentCount: number;
|
||||
signedDocumentCount: number;
|
||||
createdAt: Date;
|
||||
};
|
||||
|
||||
export type DocumentInsights = {
|
||||
id: string;
|
||||
title: string;
|
||||
status: DocumentStatus;
|
||||
teamName: string;
|
||||
createdAt: Date;
|
||||
completedAt: Date | null;
|
||||
};
|
||||
|
||||
export type GetOrganisationDetailedInsightsOptions = {
|
||||
organisationId: string;
|
||||
page?: number;
|
||||
perPage?: number;
|
||||
dateRange?: DateRange;
|
||||
view: 'teams' | 'users' | 'documents';
|
||||
};
|
||||
|
||||
export async function getOrganisationDetailedInsights({
|
||||
organisationId,
|
||||
page = 1,
|
||||
perPage = 10,
|
||||
dateRange = 'last30days',
|
||||
view,
|
||||
}: GetOrganisationDetailedInsightsOptions): Promise<OrganisationDetailedInsights> {
|
||||
const offset = Math.max(page - 1, 0) * perPage;
|
||||
|
||||
const now = new Date();
|
||||
let createdAtFrom: Date | null = null;
|
||||
|
||||
switch (dateRange) {
|
||||
case 'last30days': {
|
||||
createdAtFrom = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
|
||||
break;
|
||||
}
|
||||
case 'last90days': {
|
||||
createdAtFrom = new Date(now.getTime() - 90 * 24 * 60 * 60 * 1000);
|
||||
break;
|
||||
}
|
||||
case 'lastYear': {
|
||||
createdAtFrom = new Date(now.getFullYear() - 1, now.getMonth(), now.getDate());
|
||||
break;
|
||||
}
|
||||
case 'allTime':
|
||||
default:
|
||||
createdAtFrom = null;
|
||||
break;
|
||||
}
|
||||
|
||||
const summaryData = await getOrganisationSummary(organisationId, createdAtFrom);
|
||||
|
||||
const viewData = await (async () => {
|
||||
switch (view) {
|
||||
case 'teams':
|
||||
return await getTeamInsights(organisationId, offset, perPage, createdAtFrom);
|
||||
case 'users':
|
||||
return await getUserInsights(organisationId, offset, perPage, createdAtFrom);
|
||||
case 'documents':
|
||||
return await getDocumentInsights(organisationId, offset, perPage, createdAtFrom);
|
||||
default:
|
||||
throw new Error(`Invalid view: ${view}`);
|
||||
}
|
||||
})();
|
||||
|
||||
return {
|
||||
...viewData,
|
||||
summary: summaryData,
|
||||
};
|
||||
}
|
||||
|
||||
async function getTeamInsights(
|
||||
organisationId: string,
|
||||
offset: number,
|
||||
perPage: number,
|
||||
createdAtFrom: Date | null,
|
||||
): Promise<OrganisationDetailedInsights> {
|
||||
const teamsQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('Team as t')
|
||||
.leftJoin('Envelope as e', (join) =>
|
||||
join
|
||||
.onRef('t.id', '=', 'e.teamId')
|
||||
.on('e.deletedAt', 'is', null)
|
||||
.on('e.type', '=', sql.lit(EnvelopeType.DOCUMENT)),
|
||||
)
|
||||
.leftJoin('TeamGroup as tg', 'tg.teamId', 't.id')
|
||||
.leftJoin('OrganisationGroup as og', 'og.id', 'tg.organisationGroupId')
|
||||
.leftJoin('OrganisationGroupMember as ogm', 'ogm.groupId', 'og.id')
|
||||
.leftJoin('OrganisationMember as om', 'om.id', 'ogm.organisationMemberId')
|
||||
.where('t.organisationId', '=', organisationId)
|
||||
.select([
|
||||
't.id as id',
|
||||
't.name as name',
|
||||
't.createdAt as createdAt',
|
||||
sql<number>`COUNT(DISTINCT om."userId")`.as('memberCount'),
|
||||
(createdAtFrom
|
||||
? sql<number>`COUNT(DISTINCT CASE WHEN e.id IS NOT NULL AND e."createdAt" >= ${createdAtFrom} THEN e.id END)`
|
||||
: sql<number>`COUNT(DISTINCT e.id)`
|
||||
).as('documentCount'),
|
||||
])
|
||||
.groupBy(['t.id', 't.name', 't.createdAt'])
|
||||
.orderBy('documentCount', 'desc')
|
||||
.limit(perPage)
|
||||
.offset(offset);
|
||||
|
||||
const countQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('Team as t')
|
||||
.where('t.organisationId', '=', organisationId)
|
||||
.select(({ fn }) => [fn.countAll().as('count')]);
|
||||
|
||||
const [teams, countResult] = await Promise.all([teamsQuery.execute(), countQuery.execute()]);
|
||||
const count = Number(countResult[0]?.count || 0);
|
||||
|
||||
return {
|
||||
teams: teams as TeamInsights[],
|
||||
users: [],
|
||||
documents: [],
|
||||
totalPages: Math.ceil(Number(count) / perPage),
|
||||
};
|
||||
}
|
||||
|
||||
async function getUserInsights(
|
||||
organisationId: string,
|
||||
offset: number,
|
||||
perPage: number,
|
||||
createdAtFrom: Date | null,
|
||||
): Promise<OrganisationDetailedInsights> {
|
||||
const usersBase = kyselyPrisma.$kysely
|
||||
.selectFrom('OrganisationMember as om')
|
||||
.innerJoin('User as u', 'u.id', 'om.userId')
|
||||
.where('om.organisationId', '=', organisationId)
|
||||
.leftJoin('Envelope as e', (join) =>
|
||||
join
|
||||
.onRef('e.userId', '=', 'u.id')
|
||||
.on('e.deletedAt', 'is', null)
|
||||
.on('e.type', '=', sql.lit(EnvelopeType.DOCUMENT)),
|
||||
)
|
||||
.leftJoin('Team as td', (join) =>
|
||||
join.onRef('td.id', '=', 'e.teamId').on('td.organisationId', '=', organisationId),
|
||||
)
|
||||
.leftJoin('Recipient as r', (join) =>
|
||||
join.onRef('r.email', '=', 'u.email').on('r.signedAt', 'is not', null),
|
||||
)
|
||||
.leftJoin('Envelope as se', (join) =>
|
||||
join
|
||||
.onRef('se.id', '=', 'r.envelopeId')
|
||||
.on('se.deletedAt', 'is', null)
|
||||
.on('se.type', '=', sql.lit(EnvelopeType.DOCUMENT)),
|
||||
)
|
||||
.leftJoin('Team as ts', (join) =>
|
||||
join.onRef('ts.id', '=', 'se.teamId').on('ts.organisationId', '=', organisationId),
|
||||
);
|
||||
|
||||
const usersQuery = usersBase
|
||||
.select([
|
||||
'u.id as id',
|
||||
'u.name as name',
|
||||
'u.email as email',
|
||||
'u.createdAt as createdAt',
|
||||
(createdAtFrom
|
||||
? sql<number>`COUNT(DISTINCT CASE WHEN e.id IS NOT NULL AND td.id IS NOT NULL AND e."createdAt" >= ${createdAtFrom} THEN e.id END)`
|
||||
: sql<number>`COUNT(DISTINCT CASE WHEN td.id IS NOT NULL THEN e.id END)`
|
||||
).as('documentCount'),
|
||||
(createdAtFrom
|
||||
? sql<number>`COUNT(DISTINCT CASE WHEN e.id IS NOT NULL AND td.id IS NOT NULL AND e.status = 'COMPLETED' AND e."createdAt" >= ${createdAtFrom} THEN e.id END)`
|
||||
: sql<number>`COUNT(DISTINCT CASE WHEN e.id IS NOT NULL AND td.id IS NOT NULL AND e.status = 'COMPLETED' THEN e.id END)`
|
||||
).as('signedDocumentCount'),
|
||||
])
|
||||
.groupBy(['u.id', 'u.name', 'u.email', 'u.createdAt'])
|
||||
.orderBy('u.createdAt', 'desc')
|
||||
.limit(perPage)
|
||||
.offset(offset);
|
||||
|
||||
const countQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('OrganisationMember as om')
|
||||
.innerJoin('User as u', 'u.id', 'om.userId')
|
||||
.where('om.organisationId', '=', organisationId)
|
||||
.select(({ fn }) => [fn.countAll().as('count')]);
|
||||
|
||||
const [users, countResult] = await Promise.all([usersQuery.execute(), countQuery.execute()]);
|
||||
const count = Number(countResult[0]?.count || 0);
|
||||
|
||||
return {
|
||||
teams: [],
|
||||
users: users as UserInsights[],
|
||||
documents: [],
|
||||
totalPages: Math.ceil(Number(count) / perPage),
|
||||
};
|
||||
}
|
||||
|
||||
async function getDocumentInsights(
|
||||
organisationId: string,
|
||||
offset: number,
|
||||
perPage: number,
|
||||
createdAtFrom: Date | null,
|
||||
): Promise<OrganisationDetailedInsights> {
|
||||
let documentsQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('Envelope as e')
|
||||
.innerJoin('Team as t', 'e.teamId', 't.id')
|
||||
.where('t.organisationId', '=', organisationId)
|
||||
.where('e.deletedAt', 'is', null)
|
||||
.where(() => sql`e.type = ${EnvelopeType.DOCUMENT}::"EnvelopeType"`);
|
||||
|
||||
if (createdAtFrom) {
|
||||
documentsQuery = documentsQuery.where('e.createdAt', '>=', createdAtFrom);
|
||||
}
|
||||
|
||||
documentsQuery = documentsQuery
|
||||
.select([
|
||||
'e.id as id',
|
||||
'e.title as title',
|
||||
'e.status as status',
|
||||
'e.createdAt as createdAt',
|
||||
'e.completedAt as completedAt',
|
||||
't.name as teamName',
|
||||
])
|
||||
.orderBy('e.createdAt', 'desc')
|
||||
.limit(perPage)
|
||||
.offset(offset);
|
||||
|
||||
let countQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('Envelope as e')
|
||||
.innerJoin('Team as t', 'e.teamId', 't.id')
|
||||
.where('t.organisationId', '=', organisationId)
|
||||
.where('e.deletedAt', 'is', null)
|
||||
.where(() => sql`e.type = ${EnvelopeType.DOCUMENT}::"EnvelopeType"`);
|
||||
|
||||
if (createdAtFrom) {
|
||||
countQuery = countQuery.where('e.createdAt', '>=', createdAtFrom);
|
||||
}
|
||||
|
||||
countQuery = countQuery.select(({ fn }) => [fn.countAll().as('count')]);
|
||||
|
||||
const [documents, countResult] = await Promise.all([
|
||||
documentsQuery.execute(),
|
||||
countQuery.execute(),
|
||||
]);
|
||||
|
||||
const count = Number((countResult[0] as { count: number })?.count || 0);
|
||||
|
||||
return {
|
||||
teams: [],
|
||||
users: [],
|
||||
documents: documents.map((doc) => ({
|
||||
...doc,
|
||||
id: String((doc as { id: number }).id),
|
||||
})) as DocumentInsights[],
|
||||
totalPages: Math.ceil(Number(count) / perPage),
|
||||
};
|
||||
}
|
||||
|
||||
async function getOrganisationSummary(
|
||||
organisationId: string,
|
||||
createdAtFrom: Date | null,
|
||||
): Promise<OrganisationSummary> {
|
||||
const summaryQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('Organisation as o')
|
||||
.where('o.id', '=', organisationId)
|
||||
.select([
|
||||
sql<number>`(SELECT COUNT(DISTINCT t2.id) FROM "Team" AS t2 WHERE t2."organisationId" = o.id)`.as(
|
||||
'totalTeams',
|
||||
),
|
||||
sql<number>`(SELECT COUNT(DISTINCT om2."userId") FROM "OrganisationMember" AS om2 WHERE om2."organisationId" = o.id)`.as(
|
||||
'totalMembers',
|
||||
),
|
||||
sql<number>`(
|
||||
SELECT COUNT(DISTINCT e2.id)
|
||||
FROM "Envelope" AS e2
|
||||
INNER JOIN "Team" AS t2 ON t2.id = e2."teamId"
|
||||
WHERE t2."organisationId" = o.id AND e2."deletedAt" IS NULL AND e2.type = 'DOCUMENT'
|
||||
)`.as('totalDocuments'),
|
||||
sql<number>`(
|
||||
SELECT COUNT(DISTINCT e2.id)
|
||||
FROM "Envelope" AS e2
|
||||
INNER JOIN "Team" AS t2 ON t2.id = e2."teamId"
|
||||
WHERE t2."organisationId" = o.id AND e2."deletedAt" IS NULL AND e2.type = 'DOCUMENT' AND e2.status IN ('DRAFT', 'PENDING')
|
||||
)`.as('activeDocuments'),
|
||||
sql<number>`(
|
||||
SELECT COUNT(DISTINCT e2.id)
|
||||
FROM "Envelope" AS e2
|
||||
INNER JOIN "Team" AS t2 ON t2.id = e2."teamId"
|
||||
WHERE t2."organisationId" = o.id AND e2."deletedAt" IS NULL AND e2.type = 'DOCUMENT' AND e2.status = 'COMPLETED'
|
||||
)`.as('completedDocuments'),
|
||||
(createdAtFrom
|
||||
? sql<number>`(
|
||||
SELECT COUNT(DISTINCT e2.id)
|
||||
FROM "Envelope" AS e2
|
||||
INNER JOIN "Team" AS t2 ON t2.id = e2."teamId"
|
||||
WHERE t2."organisationId" = o.id
|
||||
AND e2."deletedAt" IS NULL
|
||||
AND e2.type = 'DOCUMENT'
|
||||
AND e2.status = 'COMPLETED'
|
||||
AND e2."createdAt" >= ${createdAtFrom}
|
||||
)`
|
||||
: sql<number>`(
|
||||
SELECT COUNT(DISTINCT e2.id)
|
||||
FROM "Envelope" AS e2
|
||||
INNER JOIN "Team" AS t2 ON t2.id = e2."teamId"
|
||||
WHERE t2."organisationId" = o.id
|
||||
AND e2."deletedAt" IS NULL
|
||||
AND e2.type = 'DOCUMENT'
|
||||
AND e2.status = 'COMPLETED'
|
||||
)`
|
||||
).as('volumeThisPeriod'),
|
||||
sql<number>`(
|
||||
SELECT COUNT(DISTINCT e2.id)
|
||||
FROM "Envelope" AS e2
|
||||
INNER JOIN "Team" AS t2 ON t2.id = e2."teamId"
|
||||
WHERE t2."organisationId" = o.id AND e2."deletedAt" IS NULL AND e2.type = 'DOCUMENT' AND e2.status = 'COMPLETED'
|
||||
)`.as('volumeAllTime'),
|
||||
]);
|
||||
|
||||
const result = await summaryQuery.executeTakeFirst();
|
||||
|
||||
return {
|
||||
totalTeams: Number(result?.totalTeams || 0),
|
||||
totalMembers: Number(result?.totalMembers || 0),
|
||||
totalDocuments: Number(result?.totalDocuments || 0),
|
||||
activeDocuments: Number(result?.activeDocuments || 0),
|
||||
completedDocuments: Number(result?.completedDocuments || 0),
|
||||
volumeThisPeriod: Number(result?.volumeThisPeriod || 0),
|
||||
volumeAllTime: Number(result?.volumeAllTime || 0),
|
||||
};
|
||||
}
|
||||
@ -1,13 +1,17 @@
|
||||
import { DocumentStatus, EnvelopeType, SubscriptionStatus } from '@prisma/client';
|
||||
import { DocumentStatus, EnvelopeType } from '@prisma/client';
|
||||
|
||||
import type { DateRange } from '@documenso/lib/types/search-params';
|
||||
import { kyselyPrisma, sql } from '@documenso/prisma';
|
||||
|
||||
export type SigningVolume = {
|
||||
export type OrganisationInsights = {
|
||||
id: number;
|
||||
name: string;
|
||||
signingVolume: number;
|
||||
createdAt: Date;
|
||||
planId: string;
|
||||
customerId: string | null;
|
||||
subscriptionStatus?: string;
|
||||
teamCount?: number;
|
||||
memberCount?: number;
|
||||
};
|
||||
|
||||
export type GetSigningVolumeOptions = {
|
||||
@ -28,28 +32,26 @@ export async function getSigningVolume({
|
||||
const offset = Math.max(page - 1, 0) * perPage;
|
||||
|
||||
let findQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('Subscription as s')
|
||||
.innerJoin('Organisation as o', 's.organisationId', 'o.id')
|
||||
.selectFrom('Organisation as o')
|
||||
.leftJoin('Team as t', 'o.id', 't.organisationId')
|
||||
.leftJoin('Envelope as e', (join) =>
|
||||
join
|
||||
.onRef('t.id', '=', 'e.teamId')
|
||||
.on('e.status', '=', sql.lit(DocumentStatus.COMPLETED))
|
||||
.on('e.deletedAt', 'is', null),
|
||||
.on('e.deletedAt', 'is', null)
|
||||
.on('e.type', '=', sql.lit(EnvelopeType.DOCUMENT)),
|
||||
)
|
||||
.where(sql`s.status = ${SubscriptionStatus.ACTIVE}::"SubscriptionStatus"`)
|
||||
.where((eb) =>
|
||||
eb.or([eb('o.name', 'ilike', `%${search}%`), eb('t.name', 'ilike', `%${search}%`)]),
|
||||
)
|
||||
.where('e.type', '=', EnvelopeType.DOCUMENT)
|
||||
.select([
|
||||
's.id as id',
|
||||
's.createdAt as createdAt',
|
||||
's.planId as planId',
|
||||
'o.id as id',
|
||||
'o.createdAt as createdAt',
|
||||
'o.customerId as customerId',
|
||||
sql<string>`COALESCE(o.name, 'Unknown')`.as('name'),
|
||||
sql<number>`COUNT(DISTINCT e.id)`.as('signingVolume'),
|
||||
])
|
||||
.groupBy(['s.id', 'o.name']);
|
||||
.groupBy(['o.id', 'o.name', 'o.customerId']);
|
||||
|
||||
switch (sortBy) {
|
||||
case 'name':
|
||||
@ -68,19 +70,127 @@ export async function getSigningVolume({
|
||||
findQuery = findQuery.limit(perPage).offset(offset);
|
||||
|
||||
const countQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('Subscription as s')
|
||||
.innerJoin('Organisation as o', 's.organisationId', 'o.id')
|
||||
.selectFrom('Organisation as o')
|
||||
.leftJoin('Team as t', 'o.id', 't.organisationId')
|
||||
.where(sql`s.status = ${SubscriptionStatus.ACTIVE}::"SubscriptionStatus"`)
|
||||
.where((eb) =>
|
||||
eb.or([eb('o.name', 'ilike', `%${search}%`), eb('t.name', 'ilike', `%${search}%`)]),
|
||||
)
|
||||
.select(({ fn }) => [fn.countAll().as('count')]);
|
||||
.select(() => [sql<number>`COUNT(DISTINCT o.id)`.as('count')]);
|
||||
|
||||
const [results, [{ count }]] = await Promise.all([findQuery.execute(), countQuery.execute()]);
|
||||
|
||||
return {
|
||||
leaderboard: results,
|
||||
organisations: results,
|
||||
totalPages: Math.ceil(Number(count) / perPage),
|
||||
};
|
||||
}
|
||||
|
||||
export type GetOrganisationInsightsOptions = GetSigningVolumeOptions & {
|
||||
dateRange?: DateRange;
|
||||
startDate?: Date;
|
||||
endDate?: Date;
|
||||
};
|
||||
|
||||
export async function getOrganisationInsights({
|
||||
search = '',
|
||||
page = 1,
|
||||
perPage = 10,
|
||||
sortBy = 'signingVolume',
|
||||
sortOrder = 'desc',
|
||||
dateRange = 'last30days',
|
||||
startDate,
|
||||
endDate,
|
||||
}: GetOrganisationInsightsOptions) {
|
||||
const offset = Math.max(page - 1, 0) * perPage;
|
||||
|
||||
const now = new Date();
|
||||
let dateCondition = sql`1=1`;
|
||||
|
||||
if (startDate && endDate) {
|
||||
dateCondition = sql`e."createdAt" >= ${startDate} AND e."createdAt" <= ${endDate}`;
|
||||
} else {
|
||||
switch (dateRange) {
|
||||
case 'last30days': {
|
||||
const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
|
||||
dateCondition = sql`e."createdAt" >= ${thirtyDaysAgo}`;
|
||||
break;
|
||||
}
|
||||
case 'last90days': {
|
||||
const ninetyDaysAgo = new Date(now.getTime() - 90 * 24 * 60 * 60 * 1000);
|
||||
dateCondition = sql`e."createdAt" >= ${ninetyDaysAgo}`;
|
||||
break;
|
||||
}
|
||||
case 'lastYear': {
|
||||
const oneYearAgo = new Date(now.getFullYear() - 1, now.getMonth(), now.getDate());
|
||||
dateCondition = sql`e."createdAt" >= ${oneYearAgo}`;
|
||||
break;
|
||||
}
|
||||
case 'allTime':
|
||||
default:
|
||||
dateCondition = sql`1=1`;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
let findQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('Organisation as o')
|
||||
.leftJoin('Team as t', 'o.id', 't.organisationId')
|
||||
.leftJoin('Envelope as e', (join) =>
|
||||
join
|
||||
.onRef('t.id', '=', 'e.teamId')
|
||||
.on('e.status', '=', sql.lit(DocumentStatus.COMPLETED))
|
||||
.on('e.deletedAt', 'is', null)
|
||||
.on('e.type', '=', sql.lit(EnvelopeType.DOCUMENT)),
|
||||
)
|
||||
.leftJoin('OrganisationMember as om', 'o.id', 'om.organisationId')
|
||||
.leftJoin('Subscription as s', 'o.id', 's.organisationId')
|
||||
.where((eb) =>
|
||||
eb.or([eb('o.name', 'ilike', `%${search}%`), eb('t.name', 'ilike', `%${search}%`)]),
|
||||
)
|
||||
.select([
|
||||
'o.id as id',
|
||||
'o.createdAt as createdAt',
|
||||
'o.customerId as customerId',
|
||||
sql<string>`COALESCE(o.name, 'Unknown')`.as('name'),
|
||||
sql<number>`COUNT(DISTINCT CASE WHEN e.id IS NOT NULL AND ${dateCondition} THEN e.id END)`.as(
|
||||
'signingVolume',
|
||||
),
|
||||
sql<number>`GREATEST(COUNT(DISTINCT t.id), 1)`.as('teamCount'),
|
||||
sql<number>`COUNT(DISTINCT om."userId")`.as('memberCount'),
|
||||
sql<string>`CASE WHEN s.status IS NOT NULL THEN s.status ELSE NULL END`.as(
|
||||
'subscriptionStatus',
|
||||
),
|
||||
])
|
||||
.groupBy(['o.id', 'o.name', 'o.customerId', 's.status']);
|
||||
|
||||
switch (sortBy) {
|
||||
case 'name':
|
||||
findQuery = findQuery.orderBy('name', sortOrder);
|
||||
break;
|
||||
case 'createdAt':
|
||||
findQuery = findQuery.orderBy('createdAt', sortOrder);
|
||||
break;
|
||||
case 'signingVolume':
|
||||
findQuery = findQuery.orderBy('signingVolume', sortOrder);
|
||||
break;
|
||||
default:
|
||||
findQuery = findQuery.orderBy('signingVolume', 'desc');
|
||||
}
|
||||
|
||||
findQuery = findQuery.limit(perPage).offset(offset);
|
||||
|
||||
const countQuery = kyselyPrisma.$kysely
|
||||
.selectFrom('Organisation as o')
|
||||
.leftJoin('Team as t', 'o.id', 't.organisationId')
|
||||
.where((eb) =>
|
||||
eb.or([eb('o.name', 'ilike', `%${search}%`), eb('t.name', 'ilike', `%${search}%`)]),
|
||||
)
|
||||
.select(() => [sql<number>`COUNT(DISTINCT o.id)`.as('count')]);
|
||||
|
||||
const [results, [{ count }]] = await Promise.all([findQuery.execute(), countQuery.execute()]);
|
||||
|
||||
return {
|
||||
organisations: results,
|
||||
totalPages: Math.ceil(Number(count) / perPage),
|
||||
};
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ import { prisma } from '@documenso/prisma';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
import { jobs } from '../../jobs/client';
|
||||
import type { TRecipientAccessAuth, TRecipientActionAuth } from '../../types/document-auth';
|
||||
import type { TRecipientAccessAuth } from '../../types/document-auth';
|
||||
import { DocumentAuth } from '../../types/document-auth';
|
||||
import {
|
||||
ZWebhookDocumentSchema,
|
||||
@ -37,7 +37,6 @@ export type CompleteDocumentWithTokenOptions = {
|
||||
token: string;
|
||||
id: EnvelopeIdOptions;
|
||||
userId?: number;
|
||||
authOptions?: TRecipientActionAuth;
|
||||
accessAuthOptions?: TRecipientAccessAuth;
|
||||
requestMetadata?: RequestMetadata;
|
||||
nextSigner?: {
|
||||
|
||||
@ -44,7 +44,7 @@ export const resendDocument = async ({
|
||||
recipients,
|
||||
teamId,
|
||||
requestMetadata,
|
||||
}: ResendDocumentOptions): Promise<void> => {
|
||||
}: ResendDocumentOptions) => {
|
||||
const user = await prisma.user.findFirstOrThrow({
|
||||
where: {
|
||||
id: userId,
|
||||
@ -103,7 +103,7 @@ export const resendDocument = async ({
|
||||
).recipientSigningRequest;
|
||||
|
||||
if (!isRecipientSigningRequestEmailEnabled) {
|
||||
return;
|
||||
return envelope;
|
||||
}
|
||||
|
||||
const { branding, emailLanguage, organisationType, senderEmail, replyToEmail } =
|
||||
@ -230,4 +230,6 @@ export const resendDocument = async ({
|
||||
);
|
||||
}),
|
||||
);
|
||||
|
||||
return envelope;
|
||||
};
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import type { DocumentData, Envelope, EnvelopeItem } from '@prisma/client';
|
||||
import type { DocumentData, Envelope, EnvelopeItem, Field } from '@prisma/client';
|
||||
import {
|
||||
DocumentSigningOrder,
|
||||
DocumentStatus,
|
||||
@ -24,7 +24,9 @@ import {
|
||||
ZCheckboxFieldMeta,
|
||||
ZDropdownFieldMeta,
|
||||
ZFieldAndMetaSchema,
|
||||
ZNumberFieldMeta,
|
||||
ZRadioFieldMeta,
|
||||
ZTextFieldMeta,
|
||||
} from '../../types/field-meta';
|
||||
import {
|
||||
ZWebhookDocumentSchema,
|
||||
@ -182,80 +184,19 @@ export const sendDocument = async ({
|
||||
// Validate and autoinsert fields for V2 envelopes.
|
||||
if (envelope.internalVersion === 2) {
|
||||
for (const unknownField of envelope.fields) {
|
||||
const parsedField = ZFieldAndMetaSchema.safeParse(unknownField);
|
||||
const recipient = envelope.recipients.find((r) => r.id === unknownField.recipientId);
|
||||
|
||||
if (parsedField.error) {
|
||||
throw new AppError(AppErrorCode.INVALID_REQUEST, {
|
||||
message: 'One or more fields have invalid metadata. Error: ' + parsedField.error.message,
|
||||
if (!recipient) {
|
||||
throw new AppError(AppErrorCode.NOT_FOUND, {
|
||||
message: 'Recipient not found',
|
||||
});
|
||||
}
|
||||
|
||||
const field = parsedField.data;
|
||||
const fieldId = unknownField.id;
|
||||
const fieldToAutoInsert = extractFieldAutoInsertValues(unknownField);
|
||||
|
||||
if (field.type === FieldType.RADIO) {
|
||||
const { values = [] } = ZRadioFieldMeta.parse(field.fieldMeta);
|
||||
|
||||
const checkedItemIndex = values.findIndex((value) => value.checked);
|
||||
|
||||
if (checkedItemIndex !== -1) {
|
||||
fieldsToAutoInsert.push({
|
||||
fieldId,
|
||||
customText: toRadioCustomText(checkedItemIndex),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (field.type === FieldType.DROPDOWN) {
|
||||
const { defaultValue, values = [] } = ZDropdownFieldMeta.parse(field.fieldMeta);
|
||||
|
||||
if (defaultValue && values.some((value) => value.value === defaultValue)) {
|
||||
fieldsToAutoInsert.push({
|
||||
fieldId,
|
||||
customText: defaultValue,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (field.type === FieldType.CHECKBOX) {
|
||||
const {
|
||||
values = [],
|
||||
validationRule,
|
||||
validationLength,
|
||||
} = ZCheckboxFieldMeta.parse(field.fieldMeta);
|
||||
|
||||
const checkedIndices: number[] = [];
|
||||
|
||||
values.forEach((value, i) => {
|
||||
if (value.checked) {
|
||||
checkedIndices.push(i);
|
||||
}
|
||||
});
|
||||
|
||||
let isValid = true;
|
||||
|
||||
if (validationRule && validationLength) {
|
||||
const validation = checkboxValidationSigns.find((sign) => sign.label === validationRule);
|
||||
|
||||
if (!validation) {
|
||||
throw new AppError(AppErrorCode.INVALID_REQUEST, {
|
||||
message: 'Invalid checkbox validation rule',
|
||||
});
|
||||
}
|
||||
|
||||
isValid = validateCheckboxLength(
|
||||
checkedIndices.length,
|
||||
validation.value,
|
||||
validationLength,
|
||||
);
|
||||
}
|
||||
|
||||
if (isValid && checkedIndices.length > 0) {
|
||||
fieldsToAutoInsert.push({
|
||||
fieldId,
|
||||
customText: toCheckboxCustomText(checkedIndices),
|
||||
});
|
||||
}
|
||||
// Only auto-insert fields if the recipient has not been sent the document yet.
|
||||
if (fieldToAutoInsert && recipient.sendStatus !== SendStatus.SENT) {
|
||||
fieldsToAutoInsert.push(fieldToAutoInsert);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -275,6 +216,7 @@ export const sendDocument = async ({
|
||||
if (envelope.internalVersion === 2) {
|
||||
const autoInsertedFields = await Promise.all(
|
||||
fieldsToAutoInsert.map(async (field) => {
|
||||
// Warning: Only auto-insert fields if the recipient has not been sent the document yet.
|
||||
return await tx.field.update({
|
||||
where: {
|
||||
id: field.fieldId,
|
||||
@ -387,3 +329,113 @@ const injectFormValuesIntoDocument = async (
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Extracts the auto insertion values for a given field.
|
||||
*
|
||||
* If field is not auto insertable, returns `null`.
|
||||
*/
|
||||
export const extractFieldAutoInsertValues = (
|
||||
unknownField: Field,
|
||||
): { fieldId: number; customText: string } | null => {
|
||||
const parsedField = ZFieldAndMetaSchema.safeParse(unknownField);
|
||||
|
||||
if (parsedField.error) {
|
||||
throw new AppError(AppErrorCode.INVALID_REQUEST, {
|
||||
message: 'One or more fields have invalid metadata. Error: ' + parsedField.error.message,
|
||||
});
|
||||
}
|
||||
|
||||
const field = parsedField.data;
|
||||
const fieldId = unknownField.id;
|
||||
|
||||
// Auto insert text fields with prefilled values.
|
||||
if (field.type === FieldType.TEXT) {
|
||||
const { text } = ZTextFieldMeta.parse(field.fieldMeta);
|
||||
|
||||
if (text) {
|
||||
return {
|
||||
fieldId,
|
||||
customText: text,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Auto insert number fields with prefilled values.
|
||||
if (field.type === FieldType.NUMBER) {
|
||||
const { value } = ZNumberFieldMeta.parse(field.fieldMeta);
|
||||
|
||||
if (value) {
|
||||
return {
|
||||
fieldId,
|
||||
customText: value,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Auto insert radio fields with the pre-checked value.
|
||||
if (field.type === FieldType.RADIO) {
|
||||
const { values = [] } = ZRadioFieldMeta.parse(field.fieldMeta);
|
||||
|
||||
const checkedItemIndex = values.findIndex((value) => value.checked);
|
||||
|
||||
if (checkedItemIndex !== -1) {
|
||||
return {
|
||||
fieldId,
|
||||
customText: toRadioCustomText(checkedItemIndex),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Auto insert dropdown fields with the default value.
|
||||
if (field.type === FieldType.DROPDOWN) {
|
||||
const { defaultValue, values = [] } = ZDropdownFieldMeta.parse(field.fieldMeta);
|
||||
|
||||
if (defaultValue && values.some((value) => value.value === defaultValue)) {
|
||||
return {
|
||||
fieldId,
|
||||
customText: defaultValue,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Auto insert checkbox fields with the pre-checked values.
|
||||
if (field.type === FieldType.CHECKBOX) {
|
||||
const {
|
||||
values = [],
|
||||
validationRule,
|
||||
validationLength,
|
||||
} = ZCheckboxFieldMeta.parse(field.fieldMeta);
|
||||
|
||||
const checkedIndices: number[] = [];
|
||||
|
||||
values.forEach((value, i) => {
|
||||
if (value.checked) {
|
||||
checkedIndices.push(i);
|
||||
}
|
||||
});
|
||||
|
||||
let isValid = true;
|
||||
|
||||
if (validationRule && validationLength) {
|
||||
const validation = checkboxValidationSigns.find((sign) => sign.label === validationRule);
|
||||
|
||||
if (!validation) {
|
||||
throw new AppError(AppErrorCode.INVALID_REQUEST, {
|
||||
message: 'Invalid checkbox validation rule',
|
||||
});
|
||||
}
|
||||
|
||||
isValid = validateCheckboxLength(checkedIndices.length, validation.value, validationLength);
|
||||
}
|
||||
|
||||
if (isValid && checkedIndices.length > 0) {
|
||||
return {
|
||||
fieldId,
|
||||
customText: toCheckboxCustomText(checkedIndices),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
@ -6,6 +6,7 @@ import { prisma } from '@documenso/prisma';
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
import { DocumentAccessAuth, type TDocumentAuthMethods } from '../../types/document-auth';
|
||||
import { extractDocumentAuthMethods } from '../../utils/document-auth';
|
||||
import { extractFieldAutoInsertValues } from '../document/send-document';
|
||||
import { getTeamSettings } from '../team/get-team-settings';
|
||||
import type { EnvelopeForSigningResponse } from './get-envelope-for-recipient-signing';
|
||||
import { ZEnvelopeForSigningResponse } from './get-envelope-for-recipient-signing';
|
||||
@ -144,6 +145,19 @@ export const getEnvelopeForDirectTemplateSigning = async ({
|
||||
recipient: {
|
||||
...recipient,
|
||||
directToken: envelope.directLink?.token || '',
|
||||
fields: recipient.fields.map((field) => {
|
||||
const autoInsertValue = extractFieldAutoInsertValues(field);
|
||||
|
||||
if (!autoInsertValue) {
|
||||
return field;
|
||||
}
|
||||
|
||||
return {
|
||||
...field,
|
||||
inserted: true,
|
||||
customText: autoInsertValue.customText,
|
||||
};
|
||||
}),
|
||||
},
|
||||
recipientSignature: null,
|
||||
isRecipientsTurn: true,
|
||||
|
||||
@ -11,7 +11,7 @@ import UserSchema from '@documenso/prisma/generated/zod/modelSchema/UserSchema';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
import type { TDocumentAuthMethods } from '../../types/document-auth';
|
||||
import { ZFieldSchema } from '../../types/field';
|
||||
import { ZEnvelopeFieldSchema, ZFieldSchema } from '../../types/field';
|
||||
import { ZRecipientLiteSchema } from '../../types/recipient';
|
||||
import { isRecipientAuthorized } from '../document/is-recipient-authorized';
|
||||
import { getTeamSettings } from '../team/get-team-settings';
|
||||
@ -63,9 +63,11 @@ export const ZEnvelopeForSigningResponse = z.object({
|
||||
rejectionReason: true,
|
||||
})
|
||||
.extend({
|
||||
fields: ZFieldSchema.omit({
|
||||
documentId: true,
|
||||
templateId: true,
|
||||
fields: ZEnvelopeFieldSchema.extend({
|
||||
signature: SignatureSchema.pick({
|
||||
signatureImageAsBase64: true,
|
||||
typedSignature: true,
|
||||
}).nullish(),
|
||||
}).array(),
|
||||
})
|
||||
.array(),
|
||||
|
||||
@ -129,7 +129,7 @@ export const setFieldsForTemplate = async ({
|
||||
if (field.type === FieldType.NUMBER && field.fieldMeta) {
|
||||
const numberFieldParsedMeta = ZNumberFieldMeta.parse(field.fieldMeta);
|
||||
const errors = validateNumberField(
|
||||
String(numberFieldParsedMeta.value),
|
||||
String(numberFieldParsedMeta.value || ''),
|
||||
numberFieldParsedMeta,
|
||||
);
|
||||
if (errors.length > 0) {
|
||||
|
||||
@ -88,11 +88,13 @@ export const addUserToOrganisation = async ({
|
||||
organisationId,
|
||||
organisationGroups,
|
||||
organisationMemberRole,
|
||||
bypassEmail = false,
|
||||
}: {
|
||||
userId: number;
|
||||
organisationId: string;
|
||||
organisationGroups: OrganisationGroup[];
|
||||
organisationMemberRole: OrganisationMemberRole;
|
||||
bypassEmail?: boolean;
|
||||
}) => {
|
||||
const organisationGroupToUse = organisationGroups.find(
|
||||
(group) =>
|
||||
@ -122,13 +124,15 @@ export const addUserToOrganisation = async ({
|
||||
},
|
||||
});
|
||||
|
||||
await jobs.triggerJob({
|
||||
name: 'send.organisation-member-joined.email',
|
||||
payload: {
|
||||
organisationId,
|
||||
memberUserId: userId,
|
||||
},
|
||||
});
|
||||
if (!bypassEmail) {
|
||||
await jobs.triggerJob({
|
||||
name: 'send.organisation-member-joined.email',
|
||||
payload: {
|
||||
organisationId,
|
||||
memberUserId: userId,
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
{ timeout: 30_000 },
|
||||
);
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
import Konva from 'konva';
|
||||
// sort-imports-ignore
|
||||
import 'konva/skia-backend';
|
||||
|
||||
import Konva from 'konva';
|
||||
import path from 'node:path';
|
||||
import type { Canvas } from 'skia-canvas';
|
||||
import { FontLibrary } from 'skia-canvas';
|
||||
@ -21,21 +23,19 @@ export const insertFieldInPDFV2 = async ({
|
||||
}: InsertFieldInPDFV2Options) => {
|
||||
const fontPath = path.join(process.cwd(), 'public/fonts');
|
||||
|
||||
FontLibrary.use([
|
||||
path.join(fontPath, 'caveat.ttf'),
|
||||
path.join(fontPath, 'noto-sans.ttf'),
|
||||
path.join(fontPath, 'noto-sans-japanese.ttf'),
|
||||
path.join(fontPath, 'noto-sans-chinese.ttf'),
|
||||
path.join(fontPath, 'noto-sans-korean.ttf'),
|
||||
]);
|
||||
FontLibrary.use({
|
||||
['Caveat']: [path.join(fontPath, 'caveat.ttf')],
|
||||
['Noto Sans']: [path.join(fontPath, 'noto-sans.ttf')],
|
||||
['Noto Sans Japanese']: [path.join(fontPath, 'noto-sans-japanese.ttf')],
|
||||
['Noto Sans Chinese']: [path.join(fontPath, 'noto-sans-chinese.ttf')],
|
||||
['Noto Sans Korean']: [path.join(fontPath, 'noto-sans-korean.ttf')],
|
||||
});
|
||||
|
||||
const stage = new Konva.Stage({ width: pageWidth, height: pageHeight });
|
||||
const layer = new Konva.Layer();
|
||||
|
||||
const insertedFields = fields.filter((field) => field.inserted);
|
||||
|
||||
// Render the fields onto the layer.
|
||||
for (const field of insertedFields) {
|
||||
for (const field of fields) {
|
||||
renderField({
|
||||
scale: 1,
|
||||
field: {
|
||||
|
||||
@ -215,6 +215,12 @@ export const createDocumentFromDirectTemplate = async ({
|
||||
const fieldsToProcess = directTemplateRecipient.fields.filter((templateField) => {
|
||||
const signedFieldValue = signedFieldValues.find((value) => value.fieldId === templateField.id);
|
||||
|
||||
// Custom logic for V2 to include all fields, since v1 excludes read only
|
||||
// and prefilled fields.
|
||||
if (directTemplateEnvelope.internalVersion === 2) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Include if it's required or has a signed value
|
||||
return isRequiredField(templateField) || signedFieldValue !== undefined;
|
||||
});
|
||||
@ -468,19 +474,28 @@ export const createDocumentFromDirectTemplate = async ({
|
||||
signingOrder: directTemplateRecipient.signingOrder,
|
||||
fields: {
|
||||
createMany: {
|
||||
data: directTemplateNonSignatureFields.map(({ templateField, customText }) => ({
|
||||
envelopeId: createdEnvelope.id,
|
||||
envelopeItemId: oldEnvelopeItemToNewEnvelopeItemIdMap[templateField.envelopeItemId],
|
||||
type: templateField.type,
|
||||
page: templateField.page,
|
||||
positionX: templateField.positionX,
|
||||
positionY: templateField.positionY,
|
||||
width: templateField.width,
|
||||
height: templateField.height,
|
||||
customText: customText ?? '',
|
||||
inserted: true,
|
||||
fieldMeta: templateField.fieldMeta || Prisma.JsonNull,
|
||||
})),
|
||||
data: directTemplateNonSignatureFields.map(({ templateField, customText }) => {
|
||||
let inserted = true;
|
||||
|
||||
// Custom logic for V2 to only insert if values exist.
|
||||
if (directTemplateEnvelope.internalVersion === 2) {
|
||||
inserted = customText !== '';
|
||||
}
|
||||
|
||||
return {
|
||||
envelopeId: createdEnvelope.id,
|
||||
envelopeItemId: oldEnvelopeItemToNewEnvelopeItemIdMap[templateField.envelopeItemId],
|
||||
type: templateField.type,
|
||||
page: templateField.page,
|
||||
positionX: templateField.positionX,
|
||||
positionY: templateField.positionY,
|
||||
width: templateField.width,
|
||||
height: templateField.height,
|
||||
customText: customText ?? '',
|
||||
inserted,
|
||||
fieldMeta: templateField.fieldMeta || Prisma.JsonNull,
|
||||
};
|
||||
}),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-11-07 03:40\n"
|
||||
"PO-Revision-Date: 2025-11-12 06:14\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@ -18,10 +18,6 @@ msgstr ""
|
||||
"X-Crowdin-File: web.po\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid " Enable direct link signing"
|
||||
msgstr " Direktlink-Signierung aktivieren"
|
||||
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)"
|
||||
msgstr ".PDF-Dokumente akzeptiert (max. {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB)"
|
||||
@ -98,6 +94,11 @@ msgstr "{0, plural, one {# Ordner} other {# Ordner}}"
|
||||
msgid "{0, plural, one {# recipient} other {# recipients}}"
|
||||
msgstr "{0, plural, one {# Empfänger} other {# Empfänger}}"
|
||||
|
||||
#. placeholder {0}: envelope.recipients.length
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "{0, plural, one {# Recipient} other {# Recipients}}"
|
||||
msgstr "{0, plural, one {# Empfänger} other {# Empfänger}}"
|
||||
|
||||
#. placeholder {0}: org.teams.length
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
msgid "{0, plural, one {# team} other {# teams}}"
|
||||
@ -151,6 +152,11 @@ msgstr "{0, plural, one {Warte auf 1 Empfänger} other {Warte auf # Empfänger}}
|
||||
msgid "{0}"
|
||||
msgstr "{0}"
|
||||
|
||||
#. placeholder {0}: file.name
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "{0} couldn't be uploaded:"
|
||||
msgstr "{0} konnte nicht hochgeladen werden:"
|
||||
|
||||
#. placeholder {0}: team.name
|
||||
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
|
||||
msgid "{0} direct signing templates"
|
||||
@ -169,9 +175,9 @@ msgstr "{0} hat dich eingeladen, ein Dokument {recipientActionVerb}"
|
||||
|
||||
#. placeholder {0}: remaining.documents
|
||||
#. placeholder {1}: quota.documents
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "{0} of {1} documents remaining this month."
|
||||
msgstr "{0} von {1} Dokumenten verbleibend in diesem Monat."
|
||||
|
||||
@ -188,11 +194,6 @@ msgstr "{0} von {1} Zeile(n) ausgewählt."
|
||||
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
|
||||
msgstr "{0} im Namen von \"{1}\" hat Sie eingeladen, das Dokument \"{2}\" {recipientActionVerb}."
|
||||
|
||||
#. placeholder {0}: envelope.recipients.length
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "{0} Recipient(s)"
|
||||
msgstr "{0} Empfänger(in)"
|
||||
|
||||
#. placeholder {0}: organisation.name
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
|
||||
msgid "{0} Teams"
|
||||
@ -206,6 +207,10 @@ msgstr "{browserInfo} auf {os}"
|
||||
msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
|
||||
msgstr "{charactersRemaining, plural, one {1 Zeichen verbleibend} other {{charactersRemaining} Zeichen verbleibend}}"
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "{expiresInMinutes, plural, one {This code will expire in # minute.} other {This code will expire in # minutes.}}"
|
||||
msgstr "{expiresInMinutes, plural, one {Dieser Code wird in # Minute ablaufen.} other {Dieser Code wird in # Minuten ablaufen.}}"
|
||||
|
||||
#: packages/email/templates/document-invite.tsx
|
||||
msgid "{inviterName} <0>({inviterEmail})</0>"
|
||||
msgstr "{inviterName} <0>({inviterEmail})</0>"
|
||||
@ -254,6 +259,10 @@ msgstr "{inviterName} im Namen von \"{teamName}\" hat dich eingeladen, {0}<0/>\"
|
||||
msgid "{inviterName} on behalf of \"{teamName}\" has invited you to {action} {documentName}"
|
||||
msgstr "{inviterName} im Namen von \"{teamName}\" hat Sie eingeladen, das Dokument {documentName} {action}"
|
||||
|
||||
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
|
||||
msgid "{MAXIMUM_PASSKEYS, plural, one {You cannot have more than # passkey.} other {You cannot have more than # passkeys.}}"
|
||||
msgstr "{MAXIMUM_PASSKEYS, plural, one {Sie können nicht mehr als # Zugangsschlüssel haben.} other {Sie können nicht mehr als # Zugangsschlüssel haben.}}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgid "{prefix} added a field"
|
||||
msgstr "{prefix} hat ein Feld hinzugefügt"
|
||||
@ -1231,6 +1240,7 @@ msgid "All templates"
|
||||
msgstr "Alle Vorlagen"
|
||||
|
||||
#: apps/remix/app/components/general/period-selector.tsx
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "All Time"
|
||||
msgstr "Alle Zeiten"
|
||||
|
||||
@ -1312,6 +1322,10 @@ msgstr "Eine E-Mail mit dieser Adresse existiert bereits."
|
||||
msgid "An error occurred"
|
||||
msgstr "Ein Fehler ist aufgetreten"
|
||||
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "An error occurred during upload."
|
||||
msgstr "Ein Fehler ist beim Hochladen aufgetreten"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
msgid "An error occurred while adding fields."
|
||||
msgstr "Ein Fehler ist aufgetreten beim Hinzufügen von Feldern."
|
||||
@ -1477,9 +1491,8 @@ msgstr "Ein Fehler ist aufgetreten, während die Unterschrift aktualisiert wurde
|
||||
msgid "An error occurred while updating your profile."
|
||||
msgstr "Ein Fehler ist aufgetreten, während dein Profil aktualisiert wurde."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "An error occurred while uploading your document."
|
||||
msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde."
|
||||
|
||||
@ -1857,6 +1870,10 @@ msgstr "Schwarz"
|
||||
msgid "Blue"
|
||||
msgstr "Blau"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Bottom"
|
||||
msgstr "Unten"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Brand Details"
|
||||
msgstr "Markendetails"
|
||||
@ -2097,6 +2114,10 @@ msgstr "Ccers"
|
||||
msgid "Center"
|
||||
msgstr "Zentrum"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
msgid "Character limit"
|
||||
msgstr "Zeichenbeschränkung"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
|
||||
msgid "Character Limit"
|
||||
@ -2263,6 +2284,7 @@ msgstr "Dokument abschließen"
|
||||
msgid "Complete the fields for the following signers."
|
||||
msgstr "Vervollständigen Sie die Felder für die folgenden Unterzeichner."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-jobs-table.tsx
|
||||
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
@ -2543,11 +2565,6 @@ msgstr "Signierlinks kopieren"
|
||||
msgid "Copy token"
|
||||
msgstr "Token kopieren"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
msgid "couldn't be uploaded:"
|
||||
msgstr "konnte nicht hochgeladen werden:"
|
||||
|
||||
#: apps/remix/app/routes/_profile+/_layout.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
|
||||
@ -2739,9 +2756,11 @@ msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensign
|
||||
#: apps/remix/app/components/tables/templates-table.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-teams-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-information.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-information.tsx
|
||||
@ -3222,6 +3241,10 @@ msgstr "Dokument \"{0}\" - Ablehnung Bestätigt"
|
||||
msgid "Document \"{0}\" Cancelled"
|
||||
msgstr "Dokument „{0}“ abgebrochen"
|
||||
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Document (Legacy)"
|
||||
msgstr "Dokument (Legacy)"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Document & Recipients"
|
||||
msgstr "Dokument & Empfänger"
|
||||
@ -3354,6 +3377,10 @@ msgstr "Dokument in Ihrem Konto gefunden"
|
||||
msgid "Document ID"
|
||||
msgstr "Dokument-ID"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-information.tsx
|
||||
msgid "Document ID (Legacy)"
|
||||
msgstr "Dokumenten-ID (Legacy)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-status.tsx
|
||||
msgid "Document inbox"
|
||||
msgstr "Dokumenten-Posteingang"
|
||||
@ -3478,14 +3505,14 @@ msgid "Document updated successfully"
|
||||
msgstr "Dokument erfolgreich aktualisiert"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Document upload disabled due to unpaid invoices"
|
||||
msgstr "Dokumenten-Upload deaktiviert aufgrund unbezahlter Rechnungen"
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Document uploaded"
|
||||
msgstr "Dokument hochgeladen"
|
||||
|
||||
@ -3507,6 +3534,10 @@ msgctxt "Audit log format"
|
||||
msgid "Document visibility updated"
|
||||
msgstr "Sichtbarkeit des Dokuments aktualisiert"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
msgid "Document Volume"
|
||||
msgstr "Dokumentenmenge"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
|
||||
msgid "Document will be permanently deleted"
|
||||
msgstr "Dokument wird dauerhaft gelöscht"
|
||||
@ -3520,6 +3551,8 @@ msgstr "Dokumentation"
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.legacy_editor.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
#: apps/remix/app/components/general/user-profile-timur.tsx
|
||||
#: apps/remix/app/components/general/app-nav-mobile.tsx
|
||||
@ -3534,6 +3567,15 @@ msgstr "Dokumente"
|
||||
msgid "Documents and resources related to this envelope."
|
||||
msgstr "Dokumente und Ressourcen im Zusammenhang mit diesem Umschlag."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Documents Completed"
|
||||
msgstr "Dokumente abgeschlossen"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Documents Created"
|
||||
msgstr "Dokumente erstellt"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates.$id._index.tsx
|
||||
msgid "Documents created from template"
|
||||
msgstr "Dokumente erstellt aus Vorlage"
|
||||
@ -3631,8 +3673,7 @@ msgstr "Ziehen Sie Ihr PDF hierher."
|
||||
msgid "Drag and drop or click to upload"
|
||||
msgstr "Ziehen Sie die Datei hierher oder klicken Sie, um hochzuladen"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Drag and drop your PDF file here"
|
||||
msgstr "Ziehen Sie Ihre PDF-Datei hierher"
|
||||
|
||||
@ -3736,6 +3777,7 @@ msgstr "Offenlegung der elektronischen Unterschrift"
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings._layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-recipient-item-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
@ -3925,6 +3967,10 @@ msgstr "Aktivieren Sie das benutzerdefinierte Branding für alle Dokumente in di
|
||||
msgid "Enable custom branding for all documents in this team"
|
||||
msgstr "Aktivieren Sie das benutzerdefinierte Branding für alle Dokumente in diesem Team"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "Enable direct link signing"
|
||||
msgstr "Direktlink-Signierung aktivieren"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
#: packages/lib/constants/template.ts
|
||||
msgid "Enable Direct Link Signing"
|
||||
@ -4073,6 +4119,8 @@ msgstr "Umschlag aktualisiert"
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-signing/envelope-signer-page-renderer.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-signature-field.tsx
|
||||
@ -4096,8 +4144,7 @@ msgstr "Umschlag aktualisiert"
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
@ -4106,7 +4153,6 @@ msgstr "Umschlag aktualisiert"
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
|
||||
@ -4254,7 +4300,6 @@ msgstr "Fehlgeschlagen: {failedCount}"
|
||||
msgid "Feature Flags"
|
||||
msgstr "Funktionsflaggen"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
|
||||
msgid "Field character limit"
|
||||
msgstr "Zeichenbeschränkung des Feldes"
|
||||
@ -4311,19 +4356,17 @@ msgid "Fields updated"
|
||||
msgstr "Felder aktualisiert"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
msgstr "Die Datei darf nicht größer als {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB sein"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "File is larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
msgstr "Datei ist größer als {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "File is too small"
|
||||
msgstr "Datei ist zu klein"
|
||||
|
||||
@ -4402,6 +4445,7 @@ msgstr "Passwort vergessen?"
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Hast du dein Passwort vergessen?"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
|
||||
msgid "Free"
|
||||
msgstr "Kostenlos"
|
||||
@ -4934,6 +4978,10 @@ msgstr "Tritt {organisationName} auf Documenso bei"
|
||||
msgid "Join our community on <0>Discord</0> for community support and discussion."
|
||||
msgstr "Treten Sie unserer Community auf <0>Discord</0> bei, um Unterstützung zu erhalten und sich auszutauschen."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Joined"
|
||||
msgstr "Beigetreten"
|
||||
|
||||
#. placeholder {0}: DateTime.fromJSDate(team.createdAt).toRelative({ style: 'short' })
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
msgid "Joined {0}"
|
||||
@ -4967,10 +5015,18 @@ msgstr "Die letzten 14 Tage"
|
||||
msgid "Last 30 days"
|
||||
msgstr "Die letzten 30 Tage"
|
||||
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last 30 Days"
|
||||
msgstr "Letzte 30 Tage"
|
||||
|
||||
#: apps/remix/app/components/general/period-selector.tsx
|
||||
msgid "Last 7 days"
|
||||
msgstr "Die letzten 7 Tage"
|
||||
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last 90 Days"
|
||||
msgstr "Letzte 90 Tage"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
|
||||
msgid "Last Active"
|
||||
msgstr "Zuletzt aktiv"
|
||||
@ -5000,9 +5056,9 @@ msgstr "Zuletzt aktualisiert am"
|
||||
msgid "Last used"
|
||||
msgstr "Zuletzt verwendet"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
msgid "Leaderboard"
|
||||
msgstr "Bestenliste"
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last Year"
|
||||
msgstr "Letztes Jahr"
|
||||
|
||||
#: apps/remix/app/components/tables/user-organisations-table.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
@ -5028,6 +5084,14 @@ msgstr "Links"
|
||||
msgid "Legality of Electronic Signatures"
|
||||
msgstr "Rechtlichkeit elektronischer Unterschriften"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Letter spacing"
|
||||
msgstr "Buchstabenspacing"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Letter Spacing"
|
||||
msgstr "Buchstabenspacing"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Light Mode"
|
||||
msgstr "Lichtmodus"
|
||||
@ -5036,6 +5100,14 @@ msgstr "Lichtmodus"
|
||||
msgid "Like to have your own public profile with agreements?"
|
||||
msgstr "Möchten Sie Ihr eigenes öffentliches Profil mit Vereinbarungen haben?"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Line height"
|
||||
msgstr "Zeilenhöhe"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Zeilenhöhe"
|
||||
|
||||
#: packages/email/templates/confirm-team-email.tsx
|
||||
msgid "Link expires in 1 hour."
|
||||
msgstr "Link läuft in 1 Stunde ab."
|
||||
@ -5315,7 +5387,10 @@ msgstr "Mitglied seit"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings._layout.tsx
|
||||
#: apps/remix/app/components/tables/team-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
|
||||
msgid "Members"
|
||||
@ -5333,6 +5408,10 @@ msgstr "Nachricht"
|
||||
msgid "Message <0>(Optional)</0>"
|
||||
msgstr "Nachricht <0>(Optional)</0>"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Middle"
|
||||
msgstr "Mitte"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-number-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
|
||||
msgid "Min"
|
||||
@ -5408,7 +5487,8 @@ msgstr "N/A"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-recipient-item-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-jobs-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
@ -5475,7 +5555,6 @@ msgstr "Nie ablaufen"
|
||||
msgid "New Password"
|
||||
msgstr "Neues Passwort"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
msgid "New Template"
|
||||
msgstr "Neue Vorlage"
|
||||
@ -5739,13 +5818,11 @@ msgstr "Nur Administratoren können auf das Dokument zugreifen und es anzeigen"
|
||||
msgid "Only managers and above can access and view the document"
|
||||
msgstr "Nur Manager und darüber können auf das Dokument zugreifen und es anzeigen"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Only one file can be uploaded at a time"
|
||||
msgstr "Es kann jeweils nur eine Datei hochgeladen werden."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Only PDF files are allowed"
|
||||
msgstr "Nur PDF-Dateien sind erlaubt"
|
||||
|
||||
@ -5813,6 +5890,11 @@ msgstr "Einstellungen für Organisationsgruppen"
|
||||
msgid "Organisation has been updated successfully"
|
||||
msgstr "Organisation wurde erfolgreich aktualisiert"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-insights._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
msgid "Organisation Insights"
|
||||
msgstr "Organisationseinblicke"
|
||||
|
||||
#: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx
|
||||
msgid "Organisation invitation"
|
||||
msgstr "Organisationseinladung"
|
||||
@ -5909,6 +5991,7 @@ msgid "Organize your documents and templates"
|
||||
msgstr "Organisieren Sie Ihre Dokumente und Vorlagen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
msgctxt "Original document (adjective)"
|
||||
msgid "Original"
|
||||
msgstr "Original"
|
||||
|
||||
@ -5949,6 +6032,10 @@ msgstr "Seite {0} von {1}"
|
||||
msgid "Page {0} of {numPages}"
|
||||
msgstr "Seite {0} von {numPages}"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
msgid "Paid"
|
||||
msgstr "Bezahlt"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
msgid "Passkey"
|
||||
@ -6074,6 +6161,7 @@ msgid "per year"
|
||||
msgstr "pro Jahr"
|
||||
|
||||
#: apps/remix/app/components/tables/user-organisations-table.tsx
|
||||
msgctxt "Personal organisation (adjective)"
|
||||
msgid "Personal"
|
||||
msgstr "Persönlich"
|
||||
|
||||
@ -6273,7 +6361,6 @@ msgstr "Bitte versuchen Sie eine andere Domain."
|
||||
msgid "Please try again and make sure you enter the correct email address."
|
||||
msgstr "Bitte versuchen Sie es erneut und stellen Sie sicher, dass Sie die korrekte E-Mail-Adresse eingeben."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
msgid "Please try again later."
|
||||
msgstr "Bitte versuchen Sie es später noch einmal."
|
||||
@ -6439,6 +6526,7 @@ msgid "Read only"
|
||||
msgstr "Nur lesen"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
#: packages/ui/components/document/envelope-recipient-field-tooltip.tsx
|
||||
msgid "Read Only"
|
||||
msgstr "Nur lesen"
|
||||
|
||||
@ -6874,6 +6962,7 @@ msgstr "Rechts"
|
||||
#: apps/remix/app/components/tables/organisation-members-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-member-invites-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
|
||||
@ -6936,7 +7025,6 @@ msgstr "Suche nach Anspruchs-ID oder Name"
|
||||
msgid "Search by document title"
|
||||
msgstr "Nach Dokumenttitel suchen"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
msgid "Search by name or email"
|
||||
msgstr "Nach Name oder E-Mail suchen"
|
||||
@ -6945,6 +7033,10 @@ msgstr "Nach Name oder E-Mail suchen"
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
msgstr "Suche nach Organisations-ID, Name, Kunden-ID oder E-Mail des Inhabers"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
msgid "Search by organisation name"
|
||||
msgstr "Suche nach Organisationsname"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-search.tsx
|
||||
msgid "Search documents..."
|
||||
msgstr "Dokumente suchen..."
|
||||
@ -7115,6 +7207,10 @@ msgstr "Wählen Sie die Mitglieder, die in diese Gruppe aufgenommen werden solle
|
||||
msgid "Select triggers"
|
||||
msgstr "Auslöser auswählen"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Select vertical align"
|
||||
msgstr "Vertikale Ausrichtung auswählen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-update-dialog.tsx
|
||||
msgid "Select visibility"
|
||||
msgstr "Sichtbarkeit auswählen"
|
||||
@ -7485,12 +7581,16 @@ msgstr "Gesammelte Unterschriften"
|
||||
|
||||
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
#: packages/ui/components/document/envelope-recipient-field-tooltip.tsx
|
||||
#: packages/ui/components/document/document-read-only-fields.tsx
|
||||
msgid "Signed"
|
||||
msgstr "Unterzeichnet"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
msgctxt "Signed document (adjective)"
|
||||
msgid "Signed"
|
||||
msgstr "Signiert"
|
||||
|
||||
#: packages/lib/constants/recipient-roles.ts
|
||||
msgctxt "Recipient role actioned"
|
||||
msgid "Signed"
|
||||
@ -7556,11 +7656,6 @@ msgstr "Unterzeichnungslinks wurden für dieses Dokument erstellt."
|
||||
msgid "Signing order is enabled."
|
||||
msgstr "Unterzeichnungsreihenfolge ist aktiviert."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/leaderboard.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
msgid "Signing Volume"
|
||||
msgstr "Unterzeichnungsvolumen"
|
||||
|
||||
#: apps/remix/app/components/forms/signup.tsx
|
||||
msgid "Signups are disabled."
|
||||
msgstr "Registrierungen sind deaktiviert."
|
||||
@ -7594,7 +7689,6 @@ msgstr "Einige Unterzeichner haben noch kein Unterschriftsfeld zugewiesen bekomm
|
||||
#: apps/remix/app/components/tables/organisation-member-invites-table.tsx
|
||||
#: apps/remix/app/components/general/billing-plans.tsx
|
||||
#: apps/remix/app/components/general/billing-plans.tsx
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/teams/team-email-usage.tsx
|
||||
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
|
||||
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
|
||||
@ -7712,6 +7806,7 @@ msgstr "Statistiken"
|
||||
|
||||
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents._index.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-email-domains-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@ -7905,6 +8000,7 @@ msgstr "Systemthema"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/components/tables/organisation-teams-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Team"
|
||||
msgstr "Team"
|
||||
|
||||
@ -7990,6 +8086,7 @@ msgstr "Teammitglieder"
|
||||
msgid "Team members have been added."
|
||||
msgstr "Teammitglieder wurden hinzugefügt."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/forms/team-update-form.tsx
|
||||
#: apps/remix/app/components/dialogs/team-create-dialog.tsx
|
||||
msgid "Team Name"
|
||||
@ -8034,6 +8131,9 @@ msgstr "Team-URL"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.teams.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings._layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/general/org-menu-switcher.tsx
|
||||
msgid "Teams"
|
||||
msgstr "Teams"
|
||||
@ -8056,6 +8156,11 @@ msgstr "Teams, denen diese Organisationsgruppe derzeit zugewiesen ist"
|
||||
msgid "Template"
|
||||
msgstr "Vorlage"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Template (Legacy)"
|
||||
msgstr "Vorlage (Legacy)"
|
||||
|
||||
#: apps/remix/app/routes/embed+/v1+/authoring_.completed.create.tsx
|
||||
msgid "Template Created"
|
||||
msgstr "Vorlage erstellt"
|
||||
@ -8084,6 +8189,10 @@ msgstr "Vorlage ist von Deinem öffentlichen Profil entfernt worden."
|
||||
msgid "Template has been updated."
|
||||
msgstr "Vorlage wurde aktualisiert."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-page-view-information.tsx
|
||||
msgid "Template ID (Legacy)"
|
||||
msgstr "Vorlagen-ID (Legacy)"
|
||||
|
||||
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
|
||||
msgid "Template is using legacy field insertion"
|
||||
msgstr "Vorlage verwendet Altfeld-Integration"
|
||||
@ -8108,8 +8217,8 @@ msgstr "Vorlagentitel"
|
||||
msgid "Template updated successfully"
|
||||
msgstr "Vorlage erfolgreich aktualisiert"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Template uploaded"
|
||||
msgstr "Vorlage hochgeladen"
|
||||
|
||||
@ -8266,9 +8375,8 @@ msgstr "Das gesuchte Dokument konnte nicht gefunden werden."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.edit.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "The document you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Das gesuchte Dokument wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
msgid "The document you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Das gesuchte Dokument wurde möglicherweise entfernt, umbenannt oder existierte nie."
|
||||
|
||||
#: packages/ui/components/document/document-send-email-message-helper.tsx
|
||||
msgid "The document's name"
|
||||
@ -8279,9 +8387,8 @@ msgid "The email address which will show up in the \"Reply To\" field in emails"
|
||||
msgstr "Die E-Mail-Adresse, die im \"Antwort an\"-Feld in E-Mails angezeigt wird"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
|
||||
msgid "The email domain you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Die gesuchte E-Mail-Domain wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
msgid "The email domain you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Die gesuchte E-Mail-Domäne wurde möglicherweise entfernt, umbenannt oder existierte nie."
|
||||
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
msgid "The email or password provided is incorrect"
|
||||
@ -8337,23 +8444,17 @@ msgid "The organisation email has been created successfully."
|
||||
msgstr "Die E-Mail der Organisation wurde erfolgreich erstellt."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
msgid "The organisation group you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Die Organisationsgruppe, nach der Sie suchen, wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
msgid "The organisation group you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Die gesuchte Organisationsgruppe wurde möglicherweise entfernt, umbenannt oder existierte nie."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
msgid "The organisation role that will be applied to all members in this group."
|
||||
msgstr "Die Organisationsrolle, die auf alle Mitglieder in dieser Gruppe angewendet wird."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Die Organisation, nach der Sie suchen, wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/_layout.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Die Organisation, nach der Sie suchen, wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Die gesuchte Organisation wurde möglicherweise entfernt, umbenannt oder existierte nie."
|
||||
|
||||
#: apps/remix/app/components/general/generic-error-layout.tsx
|
||||
msgid "The page you are looking for was moved, removed, renamed or might never have existed."
|
||||
@ -8444,14 +8545,9 @@ msgid "The team email <0>{teamEmail}</0> has been removed from the following tea
|
||||
msgstr "Die Team-E-Mail <0>{teamEmail}</0> wurde aus dem folgenden Team entfernt"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/_layout.tsx
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Das Team, das Sie suchen, wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/_layout.tsx
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Das Team, das Sie suchen, könnte entfernt, umbenannt oder nie existiert haben."
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Das Team, das Sie suchen, wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
|
||||
msgid "The template has been moved successfully."
|
||||
@ -8466,9 +8562,8 @@ msgid "The template you are looking for could not be found."
|
||||
msgstr "Die gesuchte Vorlage konnte nicht gefunden werden."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates.$id._index.tsx
|
||||
msgid "The template you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Die gesuchte Vorlage wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
msgid "The template you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Die gesuchte Vorlage wurde möglicherweise entfernt, umbenannt oder existierte nie."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "The test webhook has been successfully sent to your endpoint."
|
||||
@ -8508,9 +8603,8 @@ msgid "The URL for Documenso to send webhook events to."
|
||||
msgstr "Die URL für Documenso, um Webhook-Ereignisse zu senden."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
msgid "The user you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Der Benutzer, nach dem Sie suchen, wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
msgid "The user you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Der gesuchte Benutzer wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-user-reset-two-factor-dialog.tsx
|
||||
msgid "The user's two factor authentication has been reset successfully."
|
||||
@ -8529,9 +8623,8 @@ msgid "The webhook was successfully created."
|
||||
msgstr "Der Webhook wurde erfolgreich erstellt."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id.tsx
|
||||
msgid "The webhook you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Das gesuchte Webhook wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
|
||||
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Der gesuchte Webhook wurde möglicherweise entfernt, umbenannt oder existierte nie."
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
|
||||
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
|
||||
@ -8587,10 +8680,6 @@ msgstr "Diese Aktion ist umkehrbar, jedoch bitte seien Sie vorsichtig, da das Ko
|
||||
msgid "This claim is locked and cannot be deleted."
|
||||
msgstr "Dieser Anspruch ist gesperrt und kann nicht gelöscht werden."
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "This code will expire in {expiresInMinutes} minutes."
|
||||
msgstr "Dieser Code läuft in {expiresInMinutes} Minuten ab."
|
||||
|
||||
#: packages/email/template-components/template-document-super-delete.tsx
|
||||
msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
|
||||
msgstr "Dieses Dokument kann nicht wiederhergestellt werden. Wenn du den Grund für zukünftige Dokumente anfechten möchtest, kontaktiere bitte den Support."
|
||||
@ -8836,6 +8925,7 @@ msgstr "Zeitzone"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents._index.tsx
|
||||
#: apps/remix/app/components/tables/templates-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
@ -8848,6 +8938,19 @@ msgstr "Titel"
|
||||
msgid "Title cannot be empty"
|
||||
msgstr "Titel darf nicht leer sein"
|
||||
|
||||
#. placeholder {0}: actionVerb.toLowerCase()
|
||||
#. placeholder {1}: actionTarget.toLowerCase()
|
||||
#. placeholder {2}: recipient.email
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To {0} this {1}, you need to be logged in as <0>{2}</0>"
|
||||
msgstr "Um {0} diese {1}zu {2}müssen Sie als <0>{2}</0> angemeldet sein."
|
||||
|
||||
#. placeholder {0}: actionVerb.toLowerCase()
|
||||
#. placeholder {1}: actionTarget.toLowerCase()
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To {0} this {1}, you need to be logged in."
|
||||
msgstr "Um {0} diese {1}, müssen Sie angemeldet sein."
|
||||
|
||||
#: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx
|
||||
msgid "To accept this invitation you must create an account."
|
||||
msgstr "Um diese Einladung anzunehmen, müssen Sie ein Konto erstellen."
|
||||
@ -8888,6 +8991,10 @@ msgstr "Um Zugang zu Ihrem Konto zu erhalten, bestätigen Sie bitte Ihre E-Mail-
|
||||
msgid "To mark this document as viewed, you need to be logged in as <0>{0}</0>"
|
||||
msgstr "Um dieses Dokument als angesehen zu markieren, müssen Sie als <0>{0}</0> angemeldet sein"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To mark this document as viewed, you need to be logged in."
|
||||
msgstr "Um dieses Dokument als angesehen zu markieren, müssen Sie angemeldet sein."
|
||||
|
||||
#. placeholder {0}: emptyCheckboxFields.length > 0 ? 'Checkbox' : emptyRadioFields.length > 0 ? 'Radio' : 'Select'
|
||||
#. placeholder {0}: emptyCheckboxFields.length > 0 ? 'Checkbox' : emptyRadioFields.length > 0 ? 'Radio' : 'Select'
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx
|
||||
@ -8943,6 +9050,10 @@ msgstr "Das Token ist abgelaufen. Bitte versuchen Sie es erneut."
|
||||
msgid "Token name"
|
||||
msgstr "Token-Name"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Top"
|
||||
msgstr "Oben"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
|
||||
msgid "Total Documents"
|
||||
msgstr "Gesamtdokumente"
|
||||
@ -9122,8 +9233,7 @@ msgstr "Unvollendet"
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Unknown error"
|
||||
msgstr "Unbekannter Fehler"
|
||||
|
||||
@ -9281,7 +9391,7 @@ msgstr "Passwort wird aktualisiert..."
|
||||
msgid "Updating Your Information"
|
||||
msgstr "Aktualisierung Ihrer Informationen"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "Upgrade"
|
||||
msgstr "Upgrade"
|
||||
@ -9291,7 +9401,7 @@ msgstr "Upgrade"
|
||||
msgid "Upgrade <0>{0}</0> to {planName}"
|
||||
msgstr "<0>{0}</0> auf {planName} aktualisieren"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Upgrade your plan to upload more documents"
|
||||
msgstr "Aktualisieren Sie Ihren Tarif, um mehr Dokumente hochzuladen"
|
||||
|
||||
@ -9333,9 +9443,9 @@ msgstr "Benutzerdefiniertes Dokument hochladen"
|
||||
msgid "Upload disabled"
|
||||
msgstr "Hochladen deaktiviert"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Upload Document"
|
||||
msgstr "Dokument hochladen"
|
||||
|
||||
@ -9343,14 +9453,9 @@ msgstr "Dokument hochladen"
|
||||
msgid "Upload documents and add recipients"
|
||||
msgstr "Dokumente hochladen und Empfänger hinzufügen"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
msgid "Upload Envelope"
|
||||
msgstr "Umschlag hochladen"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Upload failed"
|
||||
msgstr "Hochladen fehlgeschlagen"
|
||||
|
||||
@ -9358,11 +9463,11 @@ msgstr "Hochladen fehlgeschlagen"
|
||||
msgid "Upload Signature"
|
||||
msgstr "Signatur hochladen"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Upload Template"
|
||||
msgstr "Vorlage hochladen"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "Upload Template Document"
|
||||
msgstr "Vorlagendokument hochladen"
|
||||
@ -9389,17 +9494,10 @@ msgid "Uploaded file not an allowed file type"
|
||||
msgstr "Die hochgeladene Datei ist kein zulässiger Dateityp"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Uploading"
|
||||
msgstr "Hochladen"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
msgid "Uploading document..."
|
||||
msgstr "Dokument wird hochgeladen..."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
msgid "Uploading template..."
|
||||
msgstr "Vorlage wird hochgeladen..."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
@ -9472,6 +9570,7 @@ msgid "User with this email already exists. Please use a different email address
|
||||
msgstr "Ein Benutzer mit dieser E-Mail existiert bereits. Bitte verwenden Sie eine andere E-Mail-Adresse."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Users"
|
||||
msgstr "Benutzer"
|
||||
|
||||
@ -9494,6 +9593,10 @@ msgstr "Validierung fehlgeschlagen"
|
||||
msgid "Value"
|
||||
msgstr "Wert"
|
||||
|
||||
#: packages/lib/types/field-meta.ts
|
||||
msgid "Value must be a number"
|
||||
msgstr "Wert muss eine Zahl sein"
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "Verification Code Required"
|
||||
msgstr "Verifizierungscode erforderlich"
|
||||
@ -9526,8 +9629,8 @@ msgstr "Überprüfen Sie Ihre E-Mail-Adresse"
|
||||
msgid "Verify your email address to unlock all features."
|
||||
msgstr "Überprüfen Sie Ihre E-Mail-Adresse, um alle Funktionen freizuschalten."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Verify your email to upload documents."
|
||||
msgstr "Überprüfen Sie Ihre E-Mail, um Dokumente hochzuladen."
|
||||
|
||||
@ -9541,6 +9644,10 @@ msgstr "Überprüfen Sie Ihre Team-E-Mail-Adresse"
|
||||
msgid "Vertical"
|
||||
msgstr "Vertikal"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Vertical Align"
|
||||
msgstr "Vertikale Ausrichtung"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@ -10393,10 +10500,6 @@ msgstr "Sie können keine Gruppe löschen, die eine höhere Rolle hat als Sie."
|
||||
msgid "You cannot delete this item because the document has been sent to recipients"
|
||||
msgstr "Sie können dieses Element nicht löschen, da das Dokument an Empfänger gesendet wurde"
|
||||
|
||||
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
|
||||
msgid "You cannot have more than {MAXIMUM_PASSKEYS} passkeys."
|
||||
msgstr "Sie dürfen nicht mehr als {MAXIMUM_PASSKEYS} Passkeys haben."
|
||||
|
||||
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
|
||||
msgid "You cannot modify a group which has a higher role than you."
|
||||
msgstr "Sie können keine Gruppe ändern, die eine höhere Rolle hat als Sie."
|
||||
@ -10413,20 +10516,21 @@ msgstr "Sie können ein Teammitglied, das eine höhere Rolle als Sie hat, nicht
|
||||
msgid "You cannot remove members from this team if the inherit member feature is enabled."
|
||||
msgstr "Sie können keine Mitglieder aus diesem Team entfernen, wenn die Funktion Mitglied übernehmen aktiviert ist."
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "You cannot upload documents at this time."
|
||||
msgstr "Sie können derzeit keine Dokumente hochladen."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You cannot upload encrypted PDFs"
|
||||
msgstr "Sie können keine verschlüsselten PDFs hochladen"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "You cannot upload more than {maximumEnvelopeItemCount} items per envelope."
|
||||
msgstr "Sie können nicht mehr als {maximumEnvelopeItemCount} Elemente pro Umschlag hochladen."
|
||||
|
||||
@ -10502,9 +10606,9 @@ msgstr "Sie haben noch keine Vorlagen erstellt. Bitte laden Sie eine Datei hoch,
|
||||
msgid "You have not yet created or received any documents. To create a document please upload one."
|
||||
msgstr "Sie haben noch keine Dokumente erstellt oder erhalten. Bitte laden Sie ein Dokument hoch, um eines zu erstellen."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You have reached the limit of the number of files per envelope"
|
||||
msgstr "Sie haben das Limit für die Anzahl der Dateien pro Umschlag erreicht"
|
||||
|
||||
@ -10517,14 +10621,14 @@ msgstr "Sie haben das maximale Limit von {0} direkten Vorlagen erreicht. <0>Upgr
|
||||
msgid "You have reached the maximum number of teams for your plan. Please contact sales at <0>{SUPPORT_EMAIL}</0> if you would like to adjust your plan."
|
||||
msgstr "Sie haben die maximale Anzahl an Teams für Ihren Plan erreicht. Bitte kontaktieren Sie den Vertrieb unter <0>{SUPPORT_EMAIL}</0>, wenn Sie Ihren Plan anpassen möchten."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You have reached your document limit for this month. Please upgrade your plan."
|
||||
msgstr "Sie haben Ihr Dokumentenlimit für diesen Monat erreicht. Bitte aktualisieren Sie Ihren Plan."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "You have reached your document limit."
|
||||
msgstr "Sie haben Ihr Dokumentenlimit erreicht."
|
||||
@ -10714,7 +10818,7 @@ msgstr "Ihr aktueller Plan ist überfällig."
|
||||
msgid "Your direct signing templates"
|
||||
msgstr "Ihre direkten Unterzeichnungsvorlagen"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid "Your document failed to upload."
|
||||
msgstr "Ihr Dokument konnte nicht hochgeladen werden."
|
||||
@ -10743,9 +10847,9 @@ msgstr "Ihr Dokument wurde erfolgreich gesendet."
|
||||
msgid "Your document has been successfully duplicated."
|
||||
msgstr "Ihr Dokument wurde erfolgreich dupliziert."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Your document has been uploaded successfully."
|
||||
msgstr "Ihr Dokument wurde erfolgreich hochgeladen."
|
||||
|
||||
@ -10896,14 +11000,11 @@ msgstr "Ihre Vorlage wurde erfolgreich dupliziert."
|
||||
msgid "Your template has been successfully deleted."
|
||||
msgstr "Ihre Vorlage wurde erfolgreich gelöscht."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Your template has been uploaded successfully."
|
||||
msgstr "Ihre Vorlage wurde erfolgreich hochgeladen."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
msgid "Your template has been uploaded successfully. You will be redirected to the template page."
|
||||
msgstr "Ihre Vorlage wurde erfolgreich hochgeladen. Sie werden zur Vorlagenseite weitergeleitet."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
|
||||
msgid "Your template will be duplicated."
|
||||
msgstr "Ihre Vorlage wird dupliziert."
|
||||
|
||||
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: 2025-11-07 03:40\n"
|
||||
"PO-Revision-Date: 2025-11-12 06:14\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@ -18,10 +18,6 @@ msgstr ""
|
||||
"X-Crowdin-File: web.po\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid " Enable direct link signing"
|
||||
msgstr " Habilitar la firma mediante enlace directo"
|
||||
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)"
|
||||
msgstr ".Documentos PDF aceptados (máx {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)"
|
||||
@ -98,6 +94,11 @@ msgstr "{0, plural, one {# carpeta} other {# carpetas}}"
|
||||
msgid "{0, plural, one {# recipient} other {# recipients}}"
|
||||
msgstr "{0, plural, one {# destinatario} other {# destinatarios}}"
|
||||
|
||||
#. placeholder {0}: envelope.recipients.length
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "{0, plural, one {# Recipient} other {# Recipients}}"
|
||||
msgstr "{0, plural, one {# Destinatario} other {# Destinatarios}}"
|
||||
|
||||
#. placeholder {0}: org.teams.length
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
msgid "{0, plural, one {# team} other {# teams}}"
|
||||
@ -151,6 +152,11 @@ msgstr "{0, plural, one {Esperando 1 destinatario} other {Esperando # destinatar
|
||||
msgid "{0}"
|
||||
msgstr "{0}"
|
||||
|
||||
#. placeholder {0}: file.name
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "{0} couldn't be uploaded:"
|
||||
msgstr "{0} no pudo ser subido:"
|
||||
|
||||
#. placeholder {0}: team.name
|
||||
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
|
||||
msgid "{0} direct signing templates"
|
||||
@ -169,9 +175,9 @@ msgstr "{0} te invitó a {recipientActionVerb} un documento"
|
||||
|
||||
#. placeholder {0}: remaining.documents
|
||||
#. placeholder {1}: quota.documents
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "{0} of {1} documents remaining this month."
|
||||
msgstr "{0} de {1} documentos restantes este mes."
|
||||
|
||||
@ -188,11 +194,6 @@ msgstr "{0} de {1} fila(s) seleccionada."
|
||||
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
|
||||
msgstr "{0} en nombre de \"{1}\" te ha invitado a {recipientActionVerb} el documento \"{2}\"."
|
||||
|
||||
#. placeholder {0}: envelope.recipients.length
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "{0} Recipient(s)"
|
||||
msgstr "{0} Destinatario(s)"
|
||||
|
||||
#. placeholder {0}: organisation.name
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
|
||||
msgid "{0} Teams"
|
||||
@ -206,6 +207,10 @@ msgstr "{browserInfo} en {os}"
|
||||
msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
|
||||
msgstr "{charactersRemaining, plural, one {1 carácter restante} other {{charactersRemaining} caracteres restantes}}"
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "{expiresInMinutes, plural, one {This code will expire in # minute.} other {This code will expire in # minutes.}}"
|
||||
msgstr "{expiresInMinutes, plural, one {Este código expirará en # minuto.} other {Este código expirará en # minutos.}}"
|
||||
|
||||
#: packages/email/templates/document-invite.tsx
|
||||
msgid "{inviterName} <0>({inviterEmail})</0>"
|
||||
msgstr "{inviterName} <0>({inviterEmail})</0>"
|
||||
@ -254,6 +259,10 @@ msgstr "{inviterName} en nombre de \"{teamName}\" te ha invitado a {0}<0/>\"{doc
|
||||
msgid "{inviterName} on behalf of \"{teamName}\" has invited you to {action} {documentName}"
|
||||
msgstr "{inviterName} en nombre de \"{teamName}\" te ha invitado a {action} {documentName}"
|
||||
|
||||
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
|
||||
msgid "{MAXIMUM_PASSKEYS, plural, one {You cannot have more than # passkey.} other {You cannot have more than # passkeys.}}"
|
||||
msgstr "{MAXIMUM_PASSKEYS, plural, one {No puedes tener más de # clave de acceso.} other {No puedes tener más de # claves de acceso.}}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgid "{prefix} added a field"
|
||||
msgstr "{prefix} agregó un campo"
|
||||
@ -1231,6 +1240,7 @@ msgid "All templates"
|
||||
msgstr "Todas las plantillas"
|
||||
|
||||
#: apps/remix/app/components/general/period-selector.tsx
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "All Time"
|
||||
msgstr "Todo el Tiempo"
|
||||
|
||||
@ -1312,6 +1322,10 @@ msgstr "Ya existe un correo electrónico con esta dirección."
|
||||
msgid "An error occurred"
|
||||
msgstr "Ocurrió un error"
|
||||
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "An error occurred during upload."
|
||||
msgstr "Ocurrió un error durante la subida."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
msgid "An error occurred while adding fields."
|
||||
msgstr "Ocurrió un error al agregar campos."
|
||||
@ -1477,9 +1491,8 @@ msgstr "Ocurrió un error al actualizar la firma."
|
||||
msgid "An error occurred while updating your profile."
|
||||
msgstr "Ocurrió un error al actualizar tu perfil."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "An error occurred while uploading your document."
|
||||
msgstr "Ocurrió un error al subir tu documento."
|
||||
|
||||
@ -1857,6 +1870,10 @@ msgstr "Negro"
|
||||
msgid "Blue"
|
||||
msgstr "Azul"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Bottom"
|
||||
msgstr "Fondo"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Brand Details"
|
||||
msgstr "Detalles de la Marca"
|
||||
@ -2097,6 +2114,10 @@ msgstr "Ccers"
|
||||
msgid "Center"
|
||||
msgstr "Centro"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
msgid "Character limit"
|
||||
msgstr "Límite de caracteres"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
|
||||
msgid "Character Limit"
|
||||
@ -2263,6 +2284,7 @@ msgstr "Documento Completo"
|
||||
msgid "Complete the fields for the following signers."
|
||||
msgstr "Completa los campos para los siguientes firmantes."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-jobs-table.tsx
|
||||
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
@ -2543,11 +2565,6 @@ msgstr "Copiar enlaces de firma"
|
||||
msgid "Copy token"
|
||||
msgstr "Copiar token"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
msgid "couldn't be uploaded:"
|
||||
msgstr "no se pudo cargar:"
|
||||
|
||||
#: apps/remix/app/routes/_profile+/_layout.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
|
||||
@ -2739,9 +2756,11 @@ msgstr "Crea tu cuenta y comienza a utilizar la firma de documentos de última g
|
||||
#: apps/remix/app/components/tables/templates-table.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-teams-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-information.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-information.tsx
|
||||
@ -3222,6 +3241,10 @@ msgstr "Documento \"{0}\" - Rechazo confirmado"
|
||||
msgid "Document \"{0}\" Cancelled"
|
||||
msgstr "Documento \"{0}\" Cancelado"
|
||||
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Document (Legacy)"
|
||||
msgstr "Documento (Legado)"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Document & Recipients"
|
||||
msgstr "Documento y Destinatarios"
|
||||
@ -3354,6 +3377,10 @@ msgstr "Documento encontrado en tu cuenta"
|
||||
msgid "Document ID"
|
||||
msgstr "ID del documento"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-information.tsx
|
||||
msgid "Document ID (Legacy)"
|
||||
msgstr "ID de documento (Legado)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-status.tsx
|
||||
msgid "Document inbox"
|
||||
msgstr "Bandeja de documentos"
|
||||
@ -3478,14 +3505,14 @@ msgid "Document updated successfully"
|
||||
msgstr "Documento actualizado con éxito"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Document upload disabled due to unpaid invoices"
|
||||
msgstr "La carga de documentos está deshabilitada debido a facturas impagadas"
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Document uploaded"
|
||||
msgstr "Documento subido"
|
||||
|
||||
@ -3507,6 +3534,10 @@ msgctxt "Audit log format"
|
||||
msgid "Document visibility updated"
|
||||
msgstr "Visibilidad del documento actualizada"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
msgid "Document Volume"
|
||||
msgstr "Volumen del documento"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
|
||||
msgid "Document will be permanently deleted"
|
||||
msgstr "El documento será eliminado permanentemente"
|
||||
@ -3520,6 +3551,8 @@ msgstr "Documentación"
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.legacy_editor.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
#: apps/remix/app/components/general/user-profile-timur.tsx
|
||||
#: apps/remix/app/components/general/app-nav-mobile.tsx
|
||||
@ -3534,6 +3567,15 @@ msgstr "Documentos"
|
||||
msgid "Documents and resources related to this envelope."
|
||||
msgstr "Documentos y recursos relacionados con este sobre."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Documents Completed"
|
||||
msgstr "Documentos completados"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Documents Created"
|
||||
msgstr "Documentos creados"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates.$id._index.tsx
|
||||
msgid "Documents created from template"
|
||||
msgstr "Documentos creados a partir de la plantilla"
|
||||
@ -3631,8 +3673,7 @@ msgstr "Arrastre y suelte su PDF aquí."
|
||||
msgid "Drag and drop or click to upload"
|
||||
msgstr "Arrastra y suelta o haz clic para cargar"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Drag and drop your PDF file here"
|
||||
msgstr "Arrastra y suelta tu archivo PDF aquí"
|
||||
|
||||
@ -3736,6 +3777,7 @@ msgstr "Divulgación de Firma Electrónica"
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings._layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-recipient-item-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
@ -3925,6 +3967,10 @@ msgstr "Habilita la marca personalizada para todos los documentos en esta organi
|
||||
msgid "Enable custom branding for all documents in this team"
|
||||
msgstr "Habilita la marca personalizada para todos los documentos en este equipo"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "Enable direct link signing"
|
||||
msgstr "Habilitar firma por enlace directo"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
#: packages/lib/constants/template.ts
|
||||
msgid "Enable Direct Link Signing"
|
||||
@ -4073,6 +4119,8 @@ msgstr "Sobre actualizado"
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-signing/envelope-signer-page-renderer.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-signature-field.tsx
|
||||
@ -4096,8 +4144,7 @@ msgstr "Sobre actualizado"
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
@ -4106,7 +4153,6 @@ msgstr "Sobre actualizado"
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
|
||||
@ -4254,7 +4300,6 @@ msgstr "Fallidos: {failedCount}"
|
||||
msgid "Feature Flags"
|
||||
msgstr "Flags de características"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
|
||||
msgid "Field character limit"
|
||||
msgstr "Límite de caracteres del campo"
|
||||
@ -4311,19 +4356,17 @@ msgid "Fields updated"
|
||||
msgstr "Campos actualizados"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
msgstr "El archivo no puede ser mayor a {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "File is larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
msgstr "El archivo es mayor que {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "File is too small"
|
||||
msgstr "El archivo es demasiado pequeño"
|
||||
|
||||
@ -4402,6 +4445,7 @@ msgstr "¿Olvidaste tu contraseña?"
|
||||
msgid "Forgot your password?"
|
||||
msgstr "¿Olvidaste tu contraseña?"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
@ -4934,6 +4978,10 @@ msgstr "Únete a {organisationName} en Documenso"
|
||||
msgid "Join our community on <0>Discord</0> for community support and discussion."
|
||||
msgstr "Únete a nuestra comunidad en <0>Discord</0> para soporte y debate."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Joined"
|
||||
msgstr "Unido"
|
||||
|
||||
#. placeholder {0}: DateTime.fromJSDate(team.createdAt).toRelative({ style: 'short' })
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
msgid "Joined {0}"
|
||||
@ -4967,10 +5015,18 @@ msgstr "Últimos 14 días"
|
||||
msgid "Last 30 days"
|
||||
msgstr "Últimos 30 días"
|
||||
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last 30 Days"
|
||||
msgstr "Últimos 30 días"
|
||||
|
||||
#: apps/remix/app/components/general/period-selector.tsx
|
||||
msgid "Last 7 days"
|
||||
msgstr "Últimos 7 días"
|
||||
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last 90 Days"
|
||||
msgstr "Últimos 90 días"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
|
||||
msgid "Last Active"
|
||||
msgstr "Última actividad"
|
||||
@ -5000,9 +5056,9 @@ msgstr "Última actualización el"
|
||||
msgid "Last used"
|
||||
msgstr "Último uso"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
msgid "Leaderboard"
|
||||
msgstr "Tabla de clasificación"
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last Year"
|
||||
msgstr "Último año"
|
||||
|
||||
#: apps/remix/app/components/tables/user-organisations-table.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
@ -5028,6 +5084,14 @@ msgstr "Izquierda"
|
||||
msgid "Legality of Electronic Signatures"
|
||||
msgstr "Legalidad de las Firmas Electrónicas"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Letter spacing"
|
||||
msgstr "Espaciado de letras"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Letter Spacing"
|
||||
msgstr "Espaciado de letras"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Light Mode"
|
||||
msgstr "Modo claro"
|
||||
@ -5036,6 +5100,14 @@ msgstr "Modo claro"
|
||||
msgid "Like to have your own public profile with agreements?"
|
||||
msgstr "¿Te gustaría tener tu propio perfil público con acuerdos?"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Line height"
|
||||
msgstr "Altura de línea"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Altura de línea"
|
||||
|
||||
#: packages/email/templates/confirm-team-email.tsx
|
||||
msgid "Link expires in 1 hour."
|
||||
msgstr "El enlace expira en 1 hora."
|
||||
@ -5315,7 +5387,10 @@ msgstr "Miembro desde"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings._layout.tsx
|
||||
#: apps/remix/app/components/tables/team-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
|
||||
msgid "Members"
|
||||
@ -5333,6 +5408,10 @@ msgstr "Mensaje"
|
||||
msgid "Message <0>(Optional)</0>"
|
||||
msgstr "Mensaje <0>(Opcional)</0>"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Middle"
|
||||
msgstr "Centro"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-number-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
|
||||
msgid "Min"
|
||||
@ -5408,7 +5487,8 @@ msgstr "N/A"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-recipient-item-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-jobs-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
@ -5475,7 +5555,6 @@ msgstr "Nunca expira"
|
||||
msgid "New Password"
|
||||
msgstr "Nueva Contraseña"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
msgid "New Template"
|
||||
msgstr "Nueva plantilla"
|
||||
@ -5739,13 +5818,11 @@ msgstr "Solo los administradores pueden acceder y ver el documento"
|
||||
msgid "Only managers and above can access and view the document"
|
||||
msgstr "Solo los gerentes y superiores pueden acceder y ver el documento"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Only one file can be uploaded at a time"
|
||||
msgstr "Solo se puede cargar un archivo a la vez"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Only PDF files are allowed"
|
||||
msgstr "Solo se permiten archivos PDF"
|
||||
|
||||
@ -5813,6 +5890,11 @@ msgstr "Configuración de Grupo de Organización"
|
||||
msgid "Organisation has been updated successfully"
|
||||
msgstr "La organización ha sido actualizada con éxito"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-insights._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
msgid "Organisation Insights"
|
||||
msgstr "Perspectivas de la organización"
|
||||
|
||||
#: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx
|
||||
msgid "Organisation invitation"
|
||||
msgstr "Invitación de Organización"
|
||||
@ -5909,6 +5991,7 @@ msgid "Organize your documents and templates"
|
||||
msgstr "Organiza tus documentos y plantillas"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
msgctxt "Original document (adjective)"
|
||||
msgid "Original"
|
||||
msgstr "Original"
|
||||
|
||||
@ -5949,6 +6032,10 @@ msgstr "Página {0} de {1}"
|
||||
msgid "Page {0} of {numPages}"
|
||||
msgstr "Página {0} de {numPages}"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
msgid "Paid"
|
||||
msgstr "Pagado"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
msgid "Passkey"
|
||||
@ -6074,6 +6161,7 @@ msgid "per year"
|
||||
msgstr "al año"
|
||||
|
||||
#: apps/remix/app/components/tables/user-organisations-table.tsx
|
||||
msgctxt "Personal organisation (adjective)"
|
||||
msgid "Personal"
|
||||
msgstr "Personal"
|
||||
|
||||
@ -6273,7 +6361,6 @@ msgstr "Por favor, intenta con un dominio diferente."
|
||||
msgid "Please try again and make sure you enter the correct email address."
|
||||
msgstr "Por favor, intenta de nuevo y asegúrate de ingresar la dirección de correo electrónico correcta."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
msgid "Please try again later."
|
||||
msgstr "Por favor, intenta de nuevo más tarde."
|
||||
@ -6439,6 +6526,7 @@ msgid "Read only"
|
||||
msgstr "Solo lectura"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
#: packages/ui/components/document/envelope-recipient-field-tooltip.tsx
|
||||
msgid "Read Only"
|
||||
msgstr "Solo lectura"
|
||||
|
||||
@ -6874,6 +6962,7 @@ msgstr "Derecha"
|
||||
#: apps/remix/app/components/tables/organisation-members-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-member-invites-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
|
||||
@ -6936,7 +7025,6 @@ msgstr "Buscar por ID de reclamo o nombre"
|
||||
msgid "Search by document title"
|
||||
msgstr "Buscar por título del documento"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
msgid "Search by name or email"
|
||||
msgstr "Buscar por nombre o correo electrónico"
|
||||
@ -6945,6 +7033,10 @@ msgstr "Buscar por nombre o correo electrónico"
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
msgstr "Buscar por ID de organización, nombre, ID de cliente o correo electrónico del propietario"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
msgid "Search by organisation name"
|
||||
msgstr "Buscar por nombre de organización"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-search.tsx
|
||||
msgid "Search documents..."
|
||||
msgstr "Buscar documentos..."
|
||||
@ -7115,6 +7207,10 @@ msgstr "Seleccione a los miembros para incluir en este grupo"
|
||||
msgid "Select triggers"
|
||||
msgstr "Seleccionar activaciones"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Select vertical align"
|
||||
msgstr "Seleccionar alineación vertical"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-update-dialog.tsx
|
||||
msgid "Select visibility"
|
||||
msgstr "Seleccionar visibilidad"
|
||||
@ -7485,12 +7581,16 @@ msgstr "Firmas recolectadas"
|
||||
|
||||
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
#: packages/ui/components/document/envelope-recipient-field-tooltip.tsx
|
||||
#: packages/ui/components/document/document-read-only-fields.tsx
|
||||
msgid "Signed"
|
||||
msgstr "Firmado"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
msgctxt "Signed document (adjective)"
|
||||
msgid "Signed"
|
||||
msgstr "Firmado"
|
||||
|
||||
#: packages/lib/constants/recipient-roles.ts
|
||||
msgctxt "Recipient role actioned"
|
||||
msgid "Signed"
|
||||
@ -7556,11 +7656,6 @@ msgstr "Se han generado enlaces de firma para este documento."
|
||||
msgid "Signing order is enabled."
|
||||
msgstr "El orden de firma está habilitado."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/leaderboard.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
msgid "Signing Volume"
|
||||
msgstr "Volumen de firmas"
|
||||
|
||||
#: apps/remix/app/components/forms/signup.tsx
|
||||
msgid "Signups are disabled."
|
||||
msgstr "Las inscripciones están deshabilitadas."
|
||||
@ -7594,7 +7689,6 @@ msgstr "Algunos firmantes no han sido asignados a un campo de firma. Asigne al m
|
||||
#: apps/remix/app/components/tables/organisation-member-invites-table.tsx
|
||||
#: apps/remix/app/components/general/billing-plans.tsx
|
||||
#: apps/remix/app/components/general/billing-plans.tsx
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/teams/team-email-usage.tsx
|
||||
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
|
||||
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
|
||||
@ -7712,6 +7806,7 @@ msgstr "Estadísticas"
|
||||
|
||||
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents._index.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-email-domains-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@ -7905,6 +8000,7 @@ msgstr "Tema del sistema"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/components/tables/organisation-teams-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Team"
|
||||
msgstr "Equipo"
|
||||
|
||||
@ -7990,6 +8086,7 @@ msgstr "Miembros del equipo"
|
||||
msgid "Team members have been added."
|
||||
msgstr "Se han añadido miembros del equipo."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/forms/team-update-form.tsx
|
||||
#: apps/remix/app/components/dialogs/team-create-dialog.tsx
|
||||
msgid "Team Name"
|
||||
@ -8034,6 +8131,9 @@ msgstr "URL del equipo"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.teams.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings._layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/general/org-menu-switcher.tsx
|
||||
msgid "Teams"
|
||||
msgstr "Equipos"
|
||||
@ -8056,6 +8156,11 @@ msgstr "Equipos a los que actualmente está asignado este grupo de organización
|
||||
msgid "Template"
|
||||
msgstr "Plantilla"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Template (Legacy)"
|
||||
msgstr "Plantilla (Legado)"
|
||||
|
||||
#: apps/remix/app/routes/embed+/v1+/authoring_.completed.create.tsx
|
||||
msgid "Template Created"
|
||||
msgstr "Plantilla Creada"
|
||||
@ -8084,6 +8189,10 @@ msgstr "La plantilla ha sido eliminada de tu perfil público."
|
||||
msgid "Template has been updated."
|
||||
msgstr "La plantilla ha sido actualizada."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-page-view-information.tsx
|
||||
msgid "Template ID (Legacy)"
|
||||
msgstr "ID de plantilla (Legado)"
|
||||
|
||||
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
|
||||
msgid "Template is using legacy field insertion"
|
||||
msgstr "La plantilla utiliza inserción de campos heredada"
|
||||
@ -8108,8 +8217,8 @@ msgstr "Título de plantilla"
|
||||
msgid "Template updated successfully"
|
||||
msgstr "Plantilla actualizada con éxito"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Template uploaded"
|
||||
msgstr "Plantilla subida"
|
||||
|
||||
@ -8266,10 +8375,8 @@ msgstr "No se pudo encontrar el documento que está buscando."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.edit.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "The document you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "El documento que está buscando puede haber sido eliminado, renombrado o puede que nunca\n"
|
||||
" haya existido."
|
||||
msgid "The document you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "El documento que estás buscando puede haber sido eliminado, renombrado o quizás nunca existió."
|
||||
|
||||
#: packages/ui/components/document/document-send-email-message-helper.tsx
|
||||
msgid "The document's name"
|
||||
@ -8280,9 +8387,8 @@ msgid "The email address which will show up in the \"Reply To\" field in emails"
|
||||
msgstr "La dirección de correo que aparecerá en el campo \"Responder a\" en los correos electrónicos"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
|
||||
msgid "The email domain you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "El dominio de correo electrónico que estás buscando puede haber sido eliminado, renombrado o puede que nunca haya existido."
|
||||
msgid "The email domain you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "El dominio de correo electrónico que estás buscando puede haber sido eliminado, renombrado o quizás nunca existió."
|
||||
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
msgid "The email or password provided is incorrect"
|
||||
@ -8338,23 +8444,17 @@ msgid "The organisation email has been created successfully."
|
||||
msgstr "El correo electrónico de la organización se ha creado con éxito."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
msgid "The organisation group you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "El grupo de organización que está buscando puede haber sido eliminado, renombrado o puede que nunca haya existido."
|
||||
msgid "The organisation group you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "El grupo de organizaciones que estás buscando puede haber sido eliminado, renombrado o quizás nunca existió."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
msgid "The organisation role that will be applied to all members in this group."
|
||||
msgstr "El rol de organización que se aplicará a todos los miembros de este grupo."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "La organización que está buscando puede haber sido eliminada, renombrada o puede que nunca haya existido."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/_layout.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "La organización que está buscando puede haber sido eliminada, renombrada o puede que nunca haya existido."
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "La organización que estás buscando puede haber sido eliminada, renombrada o quizás nunca existió."
|
||||
|
||||
#: apps/remix/app/components/general/generic-error-layout.tsx
|
||||
msgid "The page you are looking for was moved, removed, renamed or might never have existed."
|
||||
@ -8445,15 +8545,9 @@ msgid "The team email <0>{teamEmail}</0> has been removed from the following tea
|
||||
msgstr "El correo electrónico del equipo <0>{teamEmail}</0> ha sido eliminado del siguiente equipo"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/_layout.tsx
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "El equipo que está buscando puede haber sido eliminado, renombrado o puede que nunca haya existido."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/_layout.tsx
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "El equipo que buscas puede haber sido eliminado, renombrado o quizás nunca\n"
|
||||
" existió."
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "El equipo que estás buscando puede haber sido eliminado, renombrado o quizás nunca existió."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
|
||||
msgid "The template has been moved successfully."
|
||||
@ -8468,10 +8562,8 @@ msgid "The template you are looking for could not be found."
|
||||
msgstr "No se pudo encontrar la plantilla que está buscando."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates.$id._index.tsx
|
||||
msgid "The template you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "La plantilla que está buscando puede haber sido eliminada, renombrada o puede que nunca\n"
|
||||
" haya existido."
|
||||
msgid "The template you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "La plantilla que estás buscando puede haber sido eliminada, renombrada o quizás nunca existió."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "The test webhook has been successfully sent to your endpoint."
|
||||
@ -8511,9 +8603,8 @@ msgid "The URL for Documenso to send webhook events to."
|
||||
msgstr "La URL para Documenso para enviar eventos de webhook."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
msgid "The user you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "El usuario que está buscando puede haber sido eliminado, renombrado o puede que nunca haya existido."
|
||||
msgid "The user you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "El usuario que estás buscando puede haber sido eliminado, renombrado o quizás nunca existió."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-user-reset-two-factor-dialog.tsx
|
||||
msgid "The user's two factor authentication has been reset successfully."
|
||||
@ -8532,9 +8623,8 @@ msgid "The webhook was successfully created."
|
||||
msgstr "El webhook fue creado con éxito."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id.tsx
|
||||
msgid "The webhook you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "El webhook que buscas puede haber sido eliminado, renombrado o puede que nunca haya existido."
|
||||
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "El webhook que estás buscando puede haber sido eliminado, renombrado o quizás nunca existió."
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
|
||||
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
|
||||
@ -8590,10 +8680,6 @@ msgstr "Esta acción es reversible, pero ten cuidado ya que la cuenta podría ve
|
||||
msgid "This claim is locked and cannot be deleted."
|
||||
msgstr "Esta reclamo está bloqueado y no puede ser eliminado."
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "This code will expire in {expiresInMinutes} minutes."
|
||||
msgstr "Este código caducará en {expiresInMinutes} minutos."
|
||||
|
||||
#: packages/email/template-components/template-document-super-delete.tsx
|
||||
msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
|
||||
msgstr "Este documento no se puede recuperar, si deseas impugnar la razón para documentos futuros, por favor contacta con el soporte."
|
||||
@ -8839,6 +8925,7 @@ msgstr "Zona horaria"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents._index.tsx
|
||||
#: apps/remix/app/components/tables/templates-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
@ -8851,6 +8938,19 @@ msgstr "Título"
|
||||
msgid "Title cannot be empty"
|
||||
msgstr "El título no puede estar vacío"
|
||||
|
||||
#. placeholder {0}: actionVerb.toLowerCase()
|
||||
#. placeholder {1}: actionTarget.toLowerCase()
|
||||
#. placeholder {2}: recipient.email
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To {0} this {1}, you need to be logged in as <0>{2}</0>"
|
||||
msgstr "Para {0} este {1}, necesitas estar conectado como <0>{2}</0>"
|
||||
|
||||
#. placeholder {0}: actionVerb.toLowerCase()
|
||||
#. placeholder {1}: actionTarget.toLowerCase()
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To {0} this {1}, you need to be logged in."
|
||||
msgstr "Para {0} este {1}, necesitas estar conectado."
|
||||
|
||||
#: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx
|
||||
msgid "To accept this invitation you must create an account."
|
||||
msgstr "Para aceptar esta invitación debes crear una cuenta."
|
||||
@ -8891,6 +8991,10 @@ msgstr "Para acceder a tu cuenta, por favor confirma tu dirección de correo ele
|
||||
msgid "To mark this document as viewed, you need to be logged in as <0>{0}</0>"
|
||||
msgstr "Para marcar este documento como visto, debes iniciar sesión como <0>{0}</0>"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To mark this document as viewed, you need to be logged in."
|
||||
msgstr "Para marcar este documento como visto, necesitas estar conectado."
|
||||
|
||||
#. placeholder {0}: emptyCheckboxFields.length > 0 ? 'Checkbox' : emptyRadioFields.length > 0 ? 'Radio' : 'Select'
|
||||
#. placeholder {0}: emptyCheckboxFields.length > 0 ? 'Checkbox' : emptyRadioFields.length > 0 ? 'Radio' : 'Select'
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx
|
||||
@ -8946,6 +9050,10 @@ msgstr "El token ha expirado. Por favor, inténtelo de nuevo."
|
||||
msgid "Token name"
|
||||
msgstr "Nombre del token"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Top"
|
||||
msgstr "Parte superior"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
|
||||
msgid "Total Documents"
|
||||
msgstr "Total de documentos"
|
||||
@ -9125,8 +9233,7 @@ msgstr "Incompleto"
|
||||
msgid "Unknown"
|
||||
msgstr "Desconocido"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Unknown error"
|
||||
msgstr "Error desconocido"
|
||||
|
||||
@ -9284,7 +9391,7 @@ msgstr "Actualizando contraseña..."
|
||||
msgid "Updating Your Information"
|
||||
msgstr "Actualizando Su Información"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "Upgrade"
|
||||
msgstr "Actualizar"
|
||||
@ -9294,7 +9401,7 @@ msgstr "Actualizar"
|
||||
msgid "Upgrade <0>{0}</0> to {planName}"
|
||||
msgstr "Actualizar <0>{0}</0> a {planName}"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Upgrade your plan to upload more documents"
|
||||
msgstr "Actualiza tu plan para cargar más documentos"
|
||||
|
||||
@ -9336,9 +9443,9 @@ msgstr "Subir documento personalizado"
|
||||
msgid "Upload disabled"
|
||||
msgstr "Subida desactivada"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Upload Document"
|
||||
msgstr "Cargar Documento"
|
||||
|
||||
@ -9346,14 +9453,9 @@ msgstr "Cargar Documento"
|
||||
msgid "Upload documents and add recipients"
|
||||
msgstr "Suba documentos y añada destinatarios"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
msgid "Upload Envelope"
|
||||
msgstr "Cargar sobre (subir)"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Upload failed"
|
||||
msgstr "Subida fallida"
|
||||
|
||||
@ -9361,11 +9463,11 @@ msgstr "Subida fallida"
|
||||
msgid "Upload Signature"
|
||||
msgstr "Subir firma"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Upload Template"
|
||||
msgstr "Subir plantilla"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "Upload Template Document"
|
||||
msgstr "Cargar Documento Plantilla"
|
||||
@ -9392,17 +9494,10 @@ msgid "Uploaded file not an allowed file type"
|
||||
msgstr "El archivo subido no es un tipo de archivo permitido"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Uploading"
|
||||
msgstr "Subiendo"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
msgid "Uploading document..."
|
||||
msgstr "Cargando documento..."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
msgid "Uploading template..."
|
||||
msgstr "Subiendo plantilla..."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
@ -9475,6 +9570,7 @@ msgid "User with this email already exists. Please use a different email address
|
||||
msgstr "Un usuario con este correo electrónico ya existe. Por favor, use una dirección de correo diferente."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Users"
|
||||
msgstr "Usuarios"
|
||||
|
||||
@ -9497,6 +9593,10 @@ msgstr "Validación fallida"
|
||||
msgid "Value"
|
||||
msgstr "Valor"
|
||||
|
||||
#: packages/lib/types/field-meta.ts
|
||||
msgid "Value must be a number"
|
||||
msgstr "El valor debe ser un número"
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "Verification Code Required"
|
||||
msgstr "Código de verificación requerido"
|
||||
@ -9529,8 +9629,8 @@ msgstr "Verifica tu dirección de correo electrónico"
|
||||
msgid "Verify your email address to unlock all features."
|
||||
msgstr "Verifica tu dirección de correo electrónico para desbloquear todas las funciones."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Verify your email to upload documents."
|
||||
msgstr "Verifica tu correo electrónico para subir documentos."
|
||||
|
||||
@ -9544,6 +9644,10 @@ msgstr "Verifica tu dirección de correo electrónico del equipo"
|
||||
msgid "Vertical"
|
||||
msgstr "Vertical"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Vertical Align"
|
||||
msgstr "Alineación vertical"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@ -10396,10 +10500,6 @@ msgstr "No puedes eliminar un grupo que tiene un rol superior al tuyo."
|
||||
msgid "You cannot delete this item because the document has been sent to recipients"
|
||||
msgstr "No puede eliminar este elemento porque el documento ha sido enviado a los destinatarios"
|
||||
|
||||
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
|
||||
msgid "You cannot have more than {MAXIMUM_PASSKEYS} passkeys."
|
||||
msgstr "No puedes tener más de {MAXIMUM_PASSKEYS} claves de acceso."
|
||||
|
||||
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
|
||||
msgid "You cannot modify a group which has a higher role than you."
|
||||
msgstr "No puedes modificar un grupo que tiene un rol superior al tuyo."
|
||||
@ -10416,20 +10516,21 @@ msgstr "No puedes modificar a un miembro del equipo que tenga un rol más alto q
|
||||
msgid "You cannot remove members from this team if the inherit member feature is enabled."
|
||||
msgstr "No puedes eliminar miembros de este equipo si la función de heredar miembros está habilitada."
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "You cannot upload documents at this time."
|
||||
msgstr "No puede cargar documentos en este momento."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You cannot upload encrypted PDFs"
|
||||
msgstr "No puedes subir PDFs encriptados"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "You cannot upload more than {maximumEnvelopeItemCount} items per envelope."
|
||||
msgstr "No puede subir más de {maximumEnvelopeItemCount} elementos por sobre."
|
||||
|
||||
@ -10505,9 +10606,9 @@ msgstr "Aún no has creado plantillas. Para crear una plantilla, por favor carga
|
||||
msgid "You have not yet created or received any documents. To create a document please upload one."
|
||||
msgstr "Aún no has creado ni recibido documentos. Para crear un documento, por favor carga uno."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You have reached the limit of the number of files per envelope"
|
||||
msgstr "Has alcanzado el límite de archivos por sobre"
|
||||
|
||||
@ -10520,14 +10621,14 @@ msgstr "Has alcanzado el límite máximo de {0} plantillas directas. <0>¡Actual
|
||||
msgid "You have reached the maximum number of teams for your plan. Please contact sales at <0>{SUPPORT_EMAIL}</0> if you would like to adjust your plan."
|
||||
msgstr "Has alcanzado el número máximo de equipos para tu plan. Por favor, contacta con ventas en <0>{SUPPORT_EMAIL}</0> si deseas ajustar tu plan."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You have reached your document limit for this month. Please upgrade your plan."
|
||||
msgstr "Ha alcanzado su límite de documentos para este mes. Por favor, actualice su plan."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "You have reached your document limit."
|
||||
msgstr "Ha alcanzado su límite de documentos."
|
||||
@ -10717,7 +10818,7 @@ msgstr "Tu plan actual está vencido."
|
||||
msgid "Your direct signing templates"
|
||||
msgstr "Tus {0} plantillas de firma directa"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid "Your document failed to upload."
|
||||
msgstr "Tu documento no se pudo cargar."
|
||||
@ -10746,9 +10847,9 @@ msgstr "Tu documento ha sido enviado con éxito."
|
||||
msgid "Your document has been successfully duplicated."
|
||||
msgstr "Tu documento ha sido duplicado con éxito."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Your document has been uploaded successfully."
|
||||
msgstr "Tu documento ha sido subido con éxito."
|
||||
|
||||
@ -10899,14 +11000,11 @@ msgstr "Tu plantilla ha sido duplicada con éxito."
|
||||
msgid "Your template has been successfully deleted."
|
||||
msgstr "Tu plantilla ha sido eliminada con éxito."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Your template has been uploaded successfully."
|
||||
msgstr "Su plantilla ha sido subida exitosamente."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
msgid "Your template has been uploaded successfully. You will be redirected to the template page."
|
||||
msgstr "Tu plantilla ha sido cargada exitosamente. Serás redirigido a la página de plantillas."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
|
||||
msgid "Your template will be duplicated."
|
||||
msgstr "Tu plantilla será duplicada."
|
||||
|
||||
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-11-07 03:40\n"
|
||||
"PO-Revision-Date: 2025-11-12 06:14\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
@ -18,10 +18,6 @@ msgstr ""
|
||||
"X-Crowdin-File: web.po\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid " Enable direct link signing"
|
||||
msgstr " Activer la signature par lien direct"
|
||||
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)"
|
||||
msgstr "Documents .PDF acceptés (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}Mo)"
|
||||
@ -98,6 +94,11 @@ msgstr "{0, plural, one {# dossier} other {# dossiers}}"
|
||||
msgid "{0, plural, one {# recipient} other {# recipients}}"
|
||||
msgstr "{0, plural, one {# destinataire} other {# destinataires}}"
|
||||
|
||||
#. placeholder {0}: envelope.recipients.length
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "{0, plural, one {# Recipient} other {# Recipients}}"
|
||||
msgstr "{0, plural, one {# Destinataire} other {# Destinataires}}"
|
||||
|
||||
#. placeholder {0}: org.teams.length
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
msgid "{0, plural, one {# team} other {# teams}}"
|
||||
@ -151,6 +152,11 @@ msgstr "{0, plural, one {En attente d'1 destinataire} other {En attente de # des
|
||||
msgid "{0}"
|
||||
msgstr "{0}"
|
||||
|
||||
#. placeholder {0}: file.name
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "{0} couldn't be uploaded:"
|
||||
msgstr "{0} n'a pas pu être téléchargé :"
|
||||
|
||||
#. placeholder {0}: team.name
|
||||
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
|
||||
msgid "{0} direct signing templates"
|
||||
@ -169,9 +175,9 @@ msgstr "{0} vous a invité à {recipientActionVerb} un document"
|
||||
|
||||
#. placeholder {0}: remaining.documents
|
||||
#. placeholder {1}: quota.documents
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "{0} of {1} documents remaining this month."
|
||||
msgstr "{0} des {1} documents restants ce mois-ci."
|
||||
|
||||
@ -188,11 +194,6 @@ msgstr "{0} sur {1} ligne(s) sélectionnée(s)."
|
||||
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
|
||||
msgstr "{0} représentant \"{1}\" vous a invité à {recipientActionVerb} le document \"{2}\"."
|
||||
|
||||
#. placeholder {0}: envelope.recipients.length
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "{0} Recipient(s)"
|
||||
msgstr "{0} Destinataire(s)"
|
||||
|
||||
#. placeholder {0}: organisation.name
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
|
||||
msgid "{0} Teams"
|
||||
@ -206,6 +207,10 @@ msgstr "{browserInfo} sur {os}"
|
||||
msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
|
||||
msgstr "{charactersRemaining, plural, one {1 caractère restant} other {{charactersRemaining} caractères restants}}"
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "{expiresInMinutes, plural, one {This code will expire in # minute.} other {This code will expire in # minutes.}}"
|
||||
msgstr "{expiresInMinutes, plural, one {Ce code expirera dans # minute.} other {Ce code expirera dans # minutes.}}"
|
||||
|
||||
#: packages/email/templates/document-invite.tsx
|
||||
msgid "{inviterName} <0>({inviterEmail})</0>"
|
||||
msgstr "{inviterName} <0>({inviterEmail})</0>"
|
||||
@ -254,6 +259,10 @@ msgstr "{inviterName} représentant \"{teamName}\" vous a invité à {0}<0/>\"{d
|
||||
msgid "{inviterName} on behalf of \"{teamName}\" has invited you to {action} {documentName}"
|
||||
msgstr "{inviterName} représentant \"{teamName}\" vous a invité à {action} {documentName}"
|
||||
|
||||
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
|
||||
msgid "{MAXIMUM_PASSKEYS, plural, one {You cannot have more than # passkey.} other {You cannot have more than # passkeys.}}"
|
||||
msgstr "{MAXIMUM_PASSKEYS, plural, one {Vous ne pouvez pas avoir plus de # clé d'accès.} other {Vous ne pouvez pas avoir plus de # clés d'accès.}}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgid "{prefix} added a field"
|
||||
msgstr "{prefix} a ajouté un champ"
|
||||
@ -1231,6 +1240,7 @@ msgid "All templates"
|
||||
msgstr "Tous les modèles"
|
||||
|
||||
#: apps/remix/app/components/general/period-selector.tsx
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "All Time"
|
||||
msgstr "Depuis toujours"
|
||||
|
||||
@ -1312,6 +1322,10 @@ msgstr "Un email avec cette adresse existe déjà."
|
||||
msgid "An error occurred"
|
||||
msgstr "Une erreur est survenue"
|
||||
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "An error occurred during upload."
|
||||
msgstr "Une erreur est survenue lors du téléchargement."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
msgid "An error occurred while adding fields."
|
||||
msgstr "Une erreur est survenue lors de l'ajout des champs."
|
||||
@ -1477,9 +1491,8 @@ msgstr "Une erreur est survenue lors de la mise à jour de la signature."
|
||||
msgid "An error occurred while updating your profile."
|
||||
msgstr "Une erreur est survenue lors de la mise à jour de votre profil."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "An error occurred while uploading your document."
|
||||
msgstr "Une erreur est survenue lors de l'importation de votre document."
|
||||
|
||||
@ -1857,6 +1870,10 @@ msgstr "Noir"
|
||||
msgid "Blue"
|
||||
msgstr "Bleu"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Bottom"
|
||||
msgstr "Bas"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Brand Details"
|
||||
msgstr "Détails de la marque"
|
||||
@ -2097,6 +2114,10 @@ msgstr "CCers"
|
||||
msgid "Center"
|
||||
msgstr "Centre"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
msgid "Character limit"
|
||||
msgstr "Limite de caractères"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
|
||||
msgid "Character Limit"
|
||||
@ -2263,6 +2284,7 @@ msgstr "Compléter le Document"
|
||||
msgid "Complete the fields for the following signers."
|
||||
msgstr "Complétez les champs pour les signataires suivants."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-jobs-table.tsx
|
||||
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
@ -2543,11 +2565,6 @@ msgstr "Copier les liens de signature"
|
||||
msgid "Copy token"
|
||||
msgstr "Copier le token"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
msgid "couldn't be uploaded:"
|
||||
msgstr "n'a pas pu être téléchargé :"
|
||||
|
||||
#: apps/remix/app/routes/_profile+/_layout.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
|
||||
@ -2739,9 +2756,11 @@ msgstr "Créez votre compte et commencez à utiliser la signature de documents
|
||||
#: apps/remix/app/components/tables/templates-table.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-teams-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-information.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-information.tsx
|
||||
@ -3222,6 +3241,10 @@ msgstr "Document \"{0}\" - Rejet Confirmé"
|
||||
msgid "Document \"{0}\" Cancelled"
|
||||
msgstr "Document \"{0}\" Annulé"
|
||||
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Document (Legacy)"
|
||||
msgstr "Document (Legacy)"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Document & Recipients"
|
||||
msgstr "Document & Destinataires"
|
||||
@ -3354,6 +3377,10 @@ msgstr "Document trouvé dans votre compte"
|
||||
msgid "Document ID"
|
||||
msgstr "ID du document"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-information.tsx
|
||||
msgid "Document ID (Legacy)"
|
||||
msgstr "ID de Document (Legacy)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-status.tsx
|
||||
msgid "Document inbox"
|
||||
msgstr "Boîte de réception des documents"
|
||||
@ -3478,14 +3505,14 @@ msgid "Document updated successfully"
|
||||
msgstr "Document mis à jour avec succès"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Document upload disabled due to unpaid invoices"
|
||||
msgstr "Importation de documents désactivé en raison de factures impayées"
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Document uploaded"
|
||||
msgstr "Document importé"
|
||||
|
||||
@ -3507,6 +3534,10 @@ msgctxt "Audit log format"
|
||||
msgid "Document visibility updated"
|
||||
msgstr "Visibilité du document mise à jour"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
msgid "Document Volume"
|
||||
msgstr "Volume de documents"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
|
||||
msgid "Document will be permanently deleted"
|
||||
msgstr "Le document sera supprimé de manière permanente"
|
||||
@ -3520,6 +3551,8 @@ msgstr "Documentation"
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.legacy_editor.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
#: apps/remix/app/components/general/user-profile-timur.tsx
|
||||
#: apps/remix/app/components/general/app-nav-mobile.tsx
|
||||
@ -3534,6 +3567,15 @@ msgstr "Documents"
|
||||
msgid "Documents and resources related to this envelope."
|
||||
msgstr "Documents et ressources liés à cette enveloppe."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Documents Completed"
|
||||
msgstr "Documents Complétés"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Documents Created"
|
||||
msgstr "Documents Créés"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates.$id._index.tsx
|
||||
msgid "Documents created from template"
|
||||
msgstr "Documents créés à partir du modèle"
|
||||
@ -3631,8 +3673,7 @@ msgstr "Faites glisser et déposez votre PDF ici."
|
||||
msgid "Drag and drop or click to upload"
|
||||
msgstr "Glissez-déposez ou cliquez pour importer"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Drag and drop your PDF file here"
|
||||
msgstr "Faites glisser et déposez votre fichier PDF ici"
|
||||
|
||||
@ -3736,6 +3777,7 @@ msgstr "Divulgation de signature électronique"
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings._layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-recipient-item-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
@ -3925,6 +3967,10 @@ msgstr "Activez la personnalisation de la marque pour tous les documents de cett
|
||||
msgid "Enable custom branding for all documents in this team"
|
||||
msgstr "Activez la personnalisation de la marque pour tous les documents de cette équipe"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "Enable direct link signing"
|
||||
msgstr "Activer la signature par lien direct"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
#: packages/lib/constants/template.ts
|
||||
msgid "Enable Direct Link Signing"
|
||||
@ -4073,6 +4119,8 @@ msgstr "Enveloppe mise à jour"
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-signing/envelope-signer-page-renderer.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-signature-field.tsx
|
||||
@ -4096,8 +4144,7 @@ msgstr "Enveloppe mise à jour"
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
@ -4106,7 +4153,6 @@ msgstr "Enveloppe mise à jour"
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
|
||||
@ -4254,7 +4300,6 @@ msgstr "Échoués : {failedCount}"
|
||||
msgid "Feature Flags"
|
||||
msgstr "Drapeaux de fonctionnalités"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
|
||||
msgid "Field character limit"
|
||||
msgstr "Limite de caractères du champ"
|
||||
@ -4311,19 +4356,17 @@ msgid "Fields updated"
|
||||
msgstr "Champs mis à jour"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
msgstr "Le fichier ne peut pas dépasser {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} Mo"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "File is larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
msgstr "Le fichier est plus grand que {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} Mo"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "File is too small"
|
||||
msgstr "Le fichier est trop petit"
|
||||
|
||||
@ -4402,6 +4445,7 @@ msgstr "Mot de passe oublié ?"
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Vous avez oublié votre mot de passe ?"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratuit"
|
||||
@ -4934,6 +4978,10 @@ msgstr "Rejoindre {organisationName} sur Documenso"
|
||||
msgid "Join our community on <0>Discord</0> for community support and discussion."
|
||||
msgstr "Rejoignez notre communauté sur <0>Discord</0> pour obtenir de l'aide et discuter."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Joined"
|
||||
msgstr "Joint"
|
||||
|
||||
#. placeholder {0}: DateTime.fromJSDate(team.createdAt).toRelative({ style: 'short' })
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
msgid "Joined {0}"
|
||||
@ -4967,10 +5015,18 @@ msgstr "14 derniers jours"
|
||||
msgid "Last 30 days"
|
||||
msgstr "30 derniers jours"
|
||||
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last 30 Days"
|
||||
msgstr "30 derniers jours"
|
||||
|
||||
#: apps/remix/app/components/general/period-selector.tsx
|
||||
msgid "Last 7 days"
|
||||
msgstr "7 derniers jours"
|
||||
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last 90 Days"
|
||||
msgstr "90 derniers jours"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
|
||||
msgid "Last Active"
|
||||
msgstr "Dernière activité"
|
||||
@ -5000,9 +5056,9 @@ msgstr "Dernière mise à jour à"
|
||||
msgid "Last used"
|
||||
msgstr "Dernière utilisation"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
msgid "Leaderboard"
|
||||
msgstr "Classement"
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last Year"
|
||||
msgstr "Dernière Année"
|
||||
|
||||
#: apps/remix/app/components/tables/user-organisations-table.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
@ -5028,6 +5084,14 @@ msgstr "Gauche"
|
||||
msgid "Legality of Electronic Signatures"
|
||||
msgstr "Légalité des signatures électroniques"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Letter spacing"
|
||||
msgstr "Espacement des lettres"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Letter Spacing"
|
||||
msgstr "Espacement des Lettres"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Light Mode"
|
||||
msgstr "Mode clair"
|
||||
@ -5036,6 +5100,14 @@ msgstr "Mode clair"
|
||||
msgid "Like to have your own public profile with agreements?"
|
||||
msgstr "Vous voulez avoir votre propre profil public avec des accords ?"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Line height"
|
||||
msgstr "Hauteur de ligne"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Hauteur de Ligne"
|
||||
|
||||
#: packages/email/templates/confirm-team-email.tsx
|
||||
msgid "Link expires in 1 hour."
|
||||
msgstr "Le lien expire dans 1 heure."
|
||||
@ -5315,7 +5387,10 @@ msgstr "Membre depuis"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings._layout.tsx
|
||||
#: apps/remix/app/components/tables/team-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
|
||||
msgid "Members"
|
||||
@ -5333,6 +5408,10 @@ msgstr "Message"
|
||||
msgid "Message <0>(Optional)</0>"
|
||||
msgstr "Message <0>(Optionnel)</0>"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Middle"
|
||||
msgstr "Milieu"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-number-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
|
||||
msgid "Min"
|
||||
@ -5408,7 +5487,8 @@ msgstr "N/A"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-recipient-item-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-jobs-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
@ -5475,7 +5555,6 @@ msgstr "Ne jamais expirer"
|
||||
msgid "New Password"
|
||||
msgstr "Nouveau Mot de Passe"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
msgid "New Template"
|
||||
msgstr "Nouveau modèle"
|
||||
@ -5739,13 +5818,11 @@ msgstr "Seules les administrateurs peuvent accéder et voir le document"
|
||||
msgid "Only managers and above can access and view the document"
|
||||
msgstr "Seuls les responsables et au-dessus peuvent accéder et voir le document"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Only one file can be uploaded at a time"
|
||||
msgstr "Un seul fichier peut être téléchargé à la fois"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Only PDF files are allowed"
|
||||
msgstr "Seuls les fichiers PDF sont autorisés"
|
||||
|
||||
@ -5813,6 +5890,11 @@ msgstr "Paramètres du groupe d'organisation"
|
||||
msgid "Organisation has been updated successfully"
|
||||
msgstr "L'organisation a été mise à jour avec succès"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-insights._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
msgid "Organisation Insights"
|
||||
msgstr "Aperçu de l'Organisation"
|
||||
|
||||
#: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx
|
||||
msgid "Organisation invitation"
|
||||
msgstr "Invitation à l'organisation"
|
||||
@ -5909,6 +5991,7 @@ msgid "Organize your documents and templates"
|
||||
msgstr "Organisez vos documents et modèles"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
msgctxt "Original document (adjective)"
|
||||
msgid "Original"
|
||||
msgstr "Original"
|
||||
|
||||
@ -5949,6 +6032,10 @@ msgstr "Page {0} sur {1}"
|
||||
msgid "Page {0} of {numPages}"
|
||||
msgstr "Page {0} sur {numPages}"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
msgid "Paid"
|
||||
msgstr "Payé"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
msgid "Passkey"
|
||||
@ -6074,6 +6161,7 @@ msgid "per year"
|
||||
msgstr "par an"
|
||||
|
||||
#: apps/remix/app/components/tables/user-organisations-table.tsx
|
||||
msgctxt "Personal organisation (adjective)"
|
||||
msgid "Personal"
|
||||
msgstr "Personnel"
|
||||
|
||||
@ -6273,7 +6361,6 @@ msgstr "Veuillez essayer un autre domaine."
|
||||
msgid "Please try again and make sure you enter the correct email address."
|
||||
msgstr "Veuillez réessayer et assurez-vous d'entrer la bonne adresse email."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
msgid "Please try again later."
|
||||
msgstr "Veuillez réessayer plus tard."
|
||||
@ -6439,6 +6526,7 @@ msgid "Read only"
|
||||
msgstr "Lecture seule"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
#: packages/ui/components/document/envelope-recipient-field-tooltip.tsx
|
||||
msgid "Read Only"
|
||||
msgstr "Lecture Seule"
|
||||
|
||||
@ -6874,6 +6962,7 @@ msgstr "Droit"
|
||||
#: apps/remix/app/components/tables/organisation-members-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-member-invites-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
|
||||
@ -6936,7 +7025,6 @@ msgstr "Recherche par ID de réclamation ou nom"
|
||||
msgid "Search by document title"
|
||||
msgstr "Recherche par titre de document"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
msgid "Search by name or email"
|
||||
msgstr "Recherche par nom ou e-mail"
|
||||
@ -6945,6 +7033,10 @@ msgstr "Recherche par nom ou e-mail"
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
msgstr "Rechercher par ID d'organisation, nom, ID client ou e-mail du propriétaire"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
msgid "Search by organisation name"
|
||||
msgstr "Rechercher par nom d'organisation"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-search.tsx
|
||||
msgid "Search documents..."
|
||||
msgstr "Rechercher des documents..."
|
||||
@ -7115,6 +7207,10 @@ msgstr "Sélectionnez les membres à inclure dans ce groupe"
|
||||
msgid "Select triggers"
|
||||
msgstr "Sélectionner les déclencheurs"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Select vertical align"
|
||||
msgstr "Sélectionner l'alignement vertical"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-update-dialog.tsx
|
||||
msgid "Select visibility"
|
||||
msgstr "Sélectionner la visibilité"
|
||||
@ -7485,12 +7581,16 @@ msgstr "Signatures collectées"
|
||||
|
||||
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
#: packages/ui/components/document/envelope-recipient-field-tooltip.tsx
|
||||
#: packages/ui/components/document/document-read-only-fields.tsx
|
||||
msgid "Signed"
|
||||
msgstr "Signé"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
msgctxt "Signed document (adjective)"
|
||||
msgid "Signed"
|
||||
msgstr "Signé"
|
||||
|
||||
#: packages/lib/constants/recipient-roles.ts
|
||||
msgctxt "Recipient role actioned"
|
||||
msgid "Signed"
|
||||
@ -7556,11 +7656,6 @@ msgstr "Des liens de signature ont été générés pour ce document."
|
||||
msgid "Signing order is enabled."
|
||||
msgstr "L'ordre de signature est activé."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/leaderboard.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
msgid "Signing Volume"
|
||||
msgstr "Volume de signatures"
|
||||
|
||||
#: apps/remix/app/components/forms/signup.tsx
|
||||
msgid "Signups are disabled."
|
||||
msgstr "Les inscriptions sont désactivées."
|
||||
@ -7594,7 +7689,6 @@ msgstr "Certains signataires n'ont pas été assignés à un champ de signature.
|
||||
#: apps/remix/app/components/tables/organisation-member-invites-table.tsx
|
||||
#: apps/remix/app/components/general/billing-plans.tsx
|
||||
#: apps/remix/app/components/general/billing-plans.tsx
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/teams/team-email-usage.tsx
|
||||
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
|
||||
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
|
||||
@ -7712,6 +7806,7 @@ msgstr "Statistiques"
|
||||
|
||||
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents._index.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-email-domains-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@ -7905,6 +8000,7 @@ msgstr "Thème système"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/components/tables/organisation-teams-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Team"
|
||||
msgstr "Équipe"
|
||||
|
||||
@ -7990,6 +8086,7 @@ msgstr "Membres de l'équipe"
|
||||
msgid "Team members have been added."
|
||||
msgstr "Les membres de l'équipe ont été ajoutés."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/forms/team-update-form.tsx
|
||||
#: apps/remix/app/components/dialogs/team-create-dialog.tsx
|
||||
msgid "Team Name"
|
||||
@ -8034,6 +8131,9 @@ msgstr "URL de l'équipe"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.teams.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings._layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/general/org-menu-switcher.tsx
|
||||
msgid "Teams"
|
||||
msgstr "Équipes"
|
||||
@ -8056,6 +8156,11 @@ msgstr "Équipes auxquelles ce groupe d'organisation est actuellement attribué"
|
||||
msgid "Template"
|
||||
msgstr "Modèle"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Template (Legacy)"
|
||||
msgstr "Modèle (Legacy)"
|
||||
|
||||
#: apps/remix/app/routes/embed+/v1+/authoring_.completed.create.tsx
|
||||
msgid "Template Created"
|
||||
msgstr "Modèle créé"
|
||||
@ -8084,6 +8189,10 @@ msgstr "Le modèle a été retiré de votre profil public."
|
||||
msgid "Template has been updated."
|
||||
msgstr "Le modèle a été mis à jour."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-page-view-information.tsx
|
||||
msgid "Template ID (Legacy)"
|
||||
msgstr "ID de Modèle (Legacy)"
|
||||
|
||||
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
|
||||
msgid "Template is using legacy field insertion"
|
||||
msgstr "Le modèle utilise l'insertion de champ héritée"
|
||||
@ -8108,8 +8217,8 @@ msgstr "Titre du modèle"
|
||||
msgid "Template updated successfully"
|
||||
msgstr "Modèle mis à jour avec succès"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Template uploaded"
|
||||
msgstr "Modèle de document téléchargé"
|
||||
|
||||
@ -8266,9 +8375,8 @@ msgstr "Le document que vous cherchez n'a pas pu être trouvé."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.edit.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "The document you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Le document que vous cherchez a peut-être été supprimé, renommé ou n'a peut-être jamais existé."
|
||||
msgid "The document you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Le document que vous recherchez a peut-être été supprimé, renommé ou n'a jamais existé."
|
||||
|
||||
#: packages/ui/components/document/document-send-email-message-helper.tsx
|
||||
msgid "The document's name"
|
||||
@ -8279,9 +8387,8 @@ msgid "The email address which will show up in the \"Reply To\" field in emails"
|
||||
msgstr "L'adresse e-mail qui apparaîtra dans le champ \"Répondre à\" dans les courriels"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
|
||||
msgid "The email domain you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Le domaine de messagerie que vous recherchez a peut-être été supprimé, renommé ou n'a peut-être jamais existé."
|
||||
msgid "The email domain you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Le domaine de messagerie que vous recherchez a peut-être été supprimé, renommé ou n'a jamais existé."
|
||||
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
msgid "The email or password provided is incorrect"
|
||||
@ -8337,23 +8444,17 @@ msgid "The organisation email has been created successfully."
|
||||
msgstr "L'e-mail de l'organisation a été créé avec succès."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
msgid "The organisation group you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Le groupe d'organisation que vous cherchez peut avoir été supprimé, renommé ou n'a peut-être jamais existé."
|
||||
msgid "The organisation group you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Le groupe d'organisation que vous recherchez a peut-être été supprimé, renommé ou n'a jamais existé."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
msgid "The organisation role that will be applied to all members in this group."
|
||||
msgstr "Le rôle d'organisation qui sera appliqué à tous les membres de ce groupe."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "L'organisation que vous cherchez peut avoir été supprimée, renommée ou n'a peut-être jamais existé."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/_layout.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "L'organisation que vous cherchez peut avoir été supprimée, renommée ou n'a peut-être jamais existé."
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "L'organisation que vous recherchez a peut-être été supprimée, renommée ou n'a jamais existé."
|
||||
|
||||
#: apps/remix/app/components/general/generic-error-layout.tsx
|
||||
msgid "The page you are looking for was moved, removed, renamed or might never have existed."
|
||||
@ -8444,14 +8545,9 @@ msgid "The team email <0>{teamEmail}</0> has been removed from the following tea
|
||||
msgstr "L'email d'équipe <0>{teamEmail}</0> a été supprimé de l'équipe suivante"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/_layout.tsx
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "L'équipe que vous cherchez peut avoir été supprimée, renommée ou n'a peut-être jamais existé."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/_layout.tsx
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "L'équipe que vous cherchez a peut-être été supprimée, renommée ou n'a peut-être jamais existé."
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "L'équipe que vous recherchez a peut-être été supprimée, renommée ou n'a jamais existé."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
|
||||
msgid "The template has been moved successfully."
|
||||
@ -8466,9 +8562,8 @@ msgid "The template you are looking for could not be found."
|
||||
msgstr "Le modèle que vous cherchez n'a pas pu être trouvé."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates.$id._index.tsx
|
||||
msgid "The template you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Le modèle que vous cherchez a peut-être été supprimé, renommé ou n'a peut-être jamais existé."
|
||||
msgid "The template you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Le modèle que vous recherchez a peut-être été supprimé, renommé ou n'a jamais existé."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "The test webhook has been successfully sent to your endpoint."
|
||||
@ -8508,9 +8603,8 @@ msgid "The URL for Documenso to send webhook events to."
|
||||
msgstr "L'URL pour Documenso pour envoyer des événements webhook."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
msgid "The user you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "L'utilisateur que vous cherchez peut avoir été supprimé, renommé ou n'a peut-être jamais existé."
|
||||
msgid "The user you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "L'utilisateur que vous recherchez a peut-être été supprimé, renommé ou n'a jamais existé."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-user-reset-two-factor-dialog.tsx
|
||||
msgid "The user's two factor authentication has been reset successfully."
|
||||
@ -8529,9 +8623,8 @@ msgid "The webhook was successfully created."
|
||||
msgstr "Le webhook a été créé avec succès."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id.tsx
|
||||
msgid "The webhook you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Le webhook que vous recherchez a peut-être été supprimé, renommé ou n'a peut-être jamais existé."
|
||||
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Le webhook que vous recherchez a peut-être été supprimé, renommé ou n'a jamais existé."
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
|
||||
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
|
||||
@ -8587,10 +8680,6 @@ msgstr "Cette action est réversible, mais veuillez faire attention car le compt
|
||||
msgid "This claim is locked and cannot be deleted."
|
||||
msgstr "Cette réclamation est verrouillée et ne peut pas être supprimée."
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "This code will expire in {expiresInMinutes} minutes."
|
||||
msgstr "Ce code expirera dans {expiresInMinutes} minutes."
|
||||
|
||||
#: packages/email/template-components/template-document-super-delete.tsx
|
||||
msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
|
||||
msgstr "Ce document ne peut pas être récupéré, si vous souhaitez contester la raison des documents futurs, veuillez contacter le support."
|
||||
@ -8836,6 +8925,7 @@ msgstr "Fuseau horaire"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents._index.tsx
|
||||
#: apps/remix/app/components/tables/templates-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
@ -8848,6 +8938,19 @@ msgstr "Titre"
|
||||
msgid "Title cannot be empty"
|
||||
msgstr "Le titre ne peut pas être vide"
|
||||
|
||||
#. placeholder {0}: actionVerb.toLowerCase()
|
||||
#. placeholder {1}: actionTarget.toLowerCase()
|
||||
#. placeholder {2}: recipient.email
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To {0} this {1}, you need to be logged in as <0>{2}</0>"
|
||||
msgstr "Pour {0} ce {1}, vous devez être connecté en tant que <0>{2}</0>"
|
||||
|
||||
#. placeholder {0}: actionVerb.toLowerCase()
|
||||
#. placeholder {1}: actionTarget.toLowerCase()
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To {0} this {1}, you need to be logged in."
|
||||
msgstr "Pour {0} ce {1}, vous devez être connecté."
|
||||
|
||||
#: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx
|
||||
msgid "To accept this invitation you must create an account."
|
||||
msgstr "Pour accepter cette invitation, vous devez créer un compte."
|
||||
@ -8888,6 +8991,10 @@ msgstr "Pour accéder à votre compte, veuillez confirmer votre adresse e-mail e
|
||||
msgid "To mark this document as viewed, you need to be logged in as <0>{0}</0>"
|
||||
msgstr "Pour marquer ce document comme consulté, vous devez être connecté en tant que <0>{0}</0>"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To mark this document as viewed, you need to be logged in."
|
||||
msgstr "Pour marquer ce document comme vu, vous devez être connecté."
|
||||
|
||||
#. placeholder {0}: emptyCheckboxFields.length > 0 ? 'Checkbox' : emptyRadioFields.length > 0 ? 'Radio' : 'Select'
|
||||
#. placeholder {0}: emptyCheckboxFields.length > 0 ? 'Checkbox' : emptyRadioFields.length > 0 ? 'Radio' : 'Select'
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx
|
||||
@ -8943,6 +9050,10 @@ msgstr "Le token a expiré. Veuillez réessayer."
|
||||
msgid "Token name"
|
||||
msgstr "Nom du token"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Top"
|
||||
msgstr "Haut"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
|
||||
msgid "Total Documents"
|
||||
msgstr "Total des documents"
|
||||
@ -9122,8 +9233,7 @@ msgstr "Non complet"
|
||||
msgid "Unknown"
|
||||
msgstr "Inconnu"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Unknown error"
|
||||
msgstr "Erreur inconnue"
|
||||
|
||||
@ -9281,7 +9391,7 @@ msgstr "Mise à jour du mot de passe..."
|
||||
msgid "Updating Your Information"
|
||||
msgstr "Mise à jour de vos informations"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "Upgrade"
|
||||
msgstr "Améliorer"
|
||||
@ -9291,7 +9401,7 @@ msgstr "Améliorer"
|
||||
msgid "Upgrade <0>{0}</0> to {planName}"
|
||||
msgstr "Mettre à niveau <0>{0}</0> vers {planName}"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Upgrade your plan to upload more documents"
|
||||
msgstr "Mettez à niveau votre plan pour importer plus de documents"
|
||||
|
||||
@ -9333,9 +9443,9 @@ msgstr "Importer un document personnalisé"
|
||||
msgid "Upload disabled"
|
||||
msgstr "Importation désactivée"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Upload Document"
|
||||
msgstr "Importer le document"
|
||||
|
||||
@ -9343,14 +9453,9 @@ msgstr "Importer le document"
|
||||
msgid "Upload documents and add recipients"
|
||||
msgstr "Importer des documents et ajouter des destinataires"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
msgid "Upload Envelope"
|
||||
msgstr "Télécharger l'enveloppe"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Upload failed"
|
||||
msgstr "Échec de l'importation"
|
||||
|
||||
@ -9358,11 +9463,11 @@ msgstr "Échec de l'importation"
|
||||
msgid "Upload Signature"
|
||||
msgstr "Importer une signature"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Upload Template"
|
||||
msgstr "Télécharger le modèle"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "Upload Template Document"
|
||||
msgstr "Importer le document modèle"
|
||||
@ -9389,17 +9494,10 @@ msgid "Uploaded file not an allowed file type"
|
||||
msgstr "Le fichier importé n'est pas un type de fichier autorisé"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Uploading"
|
||||
msgstr "Importation en cours"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
msgid "Uploading document..."
|
||||
msgstr "Importation du document..."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
msgid "Uploading template..."
|
||||
msgstr "Téléchargement du modèle en cours..."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
@ -9472,6 +9570,7 @@ msgid "User with this email already exists. Please use a different email address
|
||||
msgstr "Un utilisateur avec cet e-mail existe déjà. Veuillez utiliser une adresse e-mail différente."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Users"
|
||||
msgstr "Utilisateurs"
|
||||
|
||||
@ -9494,6 +9593,10 @@ msgstr "La validation a échoué"
|
||||
msgid "Value"
|
||||
msgstr "Valeur"
|
||||
|
||||
#: packages/lib/types/field-meta.ts
|
||||
msgid "Value must be a number"
|
||||
msgstr "La valeur doit être un nombre"
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "Verification Code Required"
|
||||
msgstr "Code de vérification requis"
|
||||
@ -9526,8 +9629,8 @@ msgstr "Vérifiez votre adresse e-mail"
|
||||
msgid "Verify your email address to unlock all features."
|
||||
msgstr "Vérifiez votre adresse e-mail pour débloquer toutes les fonctionnalités."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Verify your email to upload documents."
|
||||
msgstr "Vérifiez votre e-mail pour importer des documents."
|
||||
|
||||
@ -9541,6 +9644,10 @@ msgstr "Vérifiez votre adresse e-mail d'équipe"
|
||||
msgid "Vertical"
|
||||
msgstr "Vertical"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Vertical Align"
|
||||
msgstr "Alignement Vertical"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@ -10393,10 +10500,6 @@ msgstr "Vous ne pouvez pas supprimer un groupe qui a un rôle supérieur au vôt
|
||||
msgid "You cannot delete this item because the document has been sent to recipients"
|
||||
msgstr "Vous ne pouvez pas supprimer cet élément car le document a été envoyé aux destinataires"
|
||||
|
||||
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
|
||||
msgid "You cannot have more than {MAXIMUM_PASSKEYS} passkeys."
|
||||
msgstr "Vous ne pouvez pas avoir plus de {MAXIMUM_PASSKEYS} clés de passkey."
|
||||
|
||||
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
|
||||
msgid "You cannot modify a group which has a higher role than you."
|
||||
msgstr "Vous ne pouvez pas modifier un groupe qui a un rôle supérieur au vôtre."
|
||||
@ -10413,20 +10516,21 @@ msgstr "Vous ne pouvez pas modifier un membre de l'équipe qui a un rôle plus
|
||||
msgid "You cannot remove members from this team if the inherit member feature is enabled."
|
||||
msgstr "Vous ne pouvez pas retirer des membres de cette équipe si la fonctionnalité d'héritage de membre est activée."
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "You cannot upload documents at this time."
|
||||
msgstr "Vous ne pouvez pas importer de documents pour le moment."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You cannot upload encrypted PDFs"
|
||||
msgstr "Vous ne pouvez pas importer de PDF cryptés"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "You cannot upload more than {maximumEnvelopeItemCount} items per envelope."
|
||||
msgstr "Vous ne pouvez pas télécharger plus de {maximumEnvelopeItemCount} articles par enveloppe."
|
||||
|
||||
@ -10502,9 +10606,9 @@ msgstr "Vous n'avez pas encore créé de modèles. Pour créer un modèle, veuil
|
||||
msgid "You have not yet created or received any documents. To create a document please upload one."
|
||||
msgstr "Vous n'avez pas encore créé ou reçu de documents. Pour créer un document, veuillez en importer un."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You have reached the limit of the number of files per envelope"
|
||||
msgstr "Vous avez atteint la limite du nombre de fichiers par enveloppe"
|
||||
|
||||
@ -10517,14 +10621,14 @@ msgstr "Vous avez atteint la limite maximale de {0} modèles directs. <0>Mettez
|
||||
msgid "You have reached the maximum number of teams for your plan. Please contact sales at <0>{SUPPORT_EMAIL}</0> if you would like to adjust your plan."
|
||||
msgstr "Vous avez atteint le nombre maximum d'équipes pour votre abonnement. Veuillez contacter le service commercial à <0>{SUPPORT_EMAIL}</0> si vous souhaitez ajuster votre plan."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You have reached your document limit for this month. Please upgrade your plan."
|
||||
msgstr "Vous avez atteint votre limite de documents pour ce mois. Veuillez passer à l'abonnement supérieur."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "You have reached your document limit."
|
||||
msgstr "Vous avez atteint votre limite de documents."
|
||||
@ -10714,7 +10818,7 @@ msgstr "Votre plan actuel est arrivé à échéance."
|
||||
msgid "Your direct signing templates"
|
||||
msgstr "Vos modèles de signature directe"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid "Your document failed to upload."
|
||||
msgstr "L'importation de votre document a échoué."
|
||||
@ -10743,9 +10847,9 @@ msgstr "Votre document a été envoyé avec succès."
|
||||
msgid "Your document has been successfully duplicated."
|
||||
msgstr "Votre document a été dupliqué avec succès."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Your document has been uploaded successfully."
|
||||
msgstr "Votre document a été importé avec succès."
|
||||
|
||||
@ -10896,14 +11000,11 @@ msgstr "Votre modèle a été dupliqué avec succès."
|
||||
msgid "Your template has been successfully deleted."
|
||||
msgstr "Votre modèle a été supprimé avec succès."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Your template has been uploaded successfully."
|
||||
msgstr "Votre modèle a été importé avec succès."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
msgid "Your template has been uploaded successfully. You will be redirected to the template page."
|
||||
msgstr "Votre modèle a été téléchargé avec succès. Vous serez redirigé vers la page du modèle."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
|
||||
msgid "Your template will be duplicated."
|
||||
msgstr "Votre modèle sera dupliqué."
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
11043
packages/lib/translations/ja/web.po
Normal file
11043
packages/lib/translations/ja/web.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-11-07 03:40\n"
|
||||
"PO-Revision-Date: 2025-11-12 06:14\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Dutch\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@ -18,10 +18,6 @@ msgstr ""
|
||||
"X-Crowdin-File: web.po\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid " Enable direct link signing"
|
||||
msgstr " Directe koppelingsondertekening inschakelen"
|
||||
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)"
|
||||
msgstr ".PDF documenten geaccepteerd (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)"
|
||||
@ -98,6 +94,11 @@ msgstr "{0, plural, one {# map} other {# mappen}}"
|
||||
msgid "{0, plural, one {# recipient} other {# recipients}}"
|
||||
msgstr "{0, plural, one {# ontvanger} other {# ontvangers}}"
|
||||
|
||||
#. placeholder {0}: envelope.recipients.length
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "{0, plural, one {# Recipient} other {# Recipients}}"
|
||||
msgstr "{0, plural, one {# Ontvanger} other {# Ontvangers}}"
|
||||
|
||||
#. placeholder {0}: org.teams.length
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
msgid "{0, plural, one {# team} other {# teams}}"
|
||||
@ -151,6 +152,11 @@ msgstr "{0, plural, one {Wachten op 1 ontvanger} other {Wachten op # ontvangers}
|
||||
msgid "{0}"
|
||||
msgstr "{0}"
|
||||
|
||||
#. placeholder {0}: file.name
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "{0} couldn't be uploaded:"
|
||||
msgstr "{0} kon niet worden geüpload:"
|
||||
|
||||
#. placeholder {0}: team.name
|
||||
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
|
||||
msgid "{0} direct signing templates"
|
||||
@ -169,9 +175,9 @@ msgstr "{0} heeft je uitgenodigd om {recipientActionVerb} een document"
|
||||
|
||||
#. placeholder {0}: remaining.documents
|
||||
#. placeholder {1}: quota.documents
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "{0} of {1} documents remaining this month."
|
||||
msgstr "{0} van de {1} documenten blijven deze maand over."
|
||||
|
||||
@ -188,11 +194,6 @@ msgstr "{0} van {1} rij(en) geselecteerd."
|
||||
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
|
||||
msgstr "{0} namens \"{1}\" heeft je uitgenodigd om {recipientActionVerb} het document \"{2}\"."
|
||||
|
||||
#. placeholder {0}: envelope.recipients.length
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "{0} Recipient(s)"
|
||||
msgstr "{0} Ontvanger(s)"
|
||||
|
||||
#. placeholder {0}: organisation.name
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
|
||||
msgid "{0} Teams"
|
||||
@ -206,6 +207,10 @@ msgstr "{browserInfo} op {os}"
|
||||
msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
|
||||
msgstr "{charactersRemaining, plural, one {1 resterend teken} other {{charactersRemaining} resterende tekens}}"
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "{expiresInMinutes, plural, one {This code will expire in # minute.} other {This code will expire in # minutes.}}"
|
||||
msgstr "{expiresInMinutes, plural, one {Deze code verloopt over # minuut.} other {Deze code verloopt over # minuten.}}"
|
||||
|
||||
#: packages/email/templates/document-invite.tsx
|
||||
msgid "{inviterName} <0>({inviterEmail})</0>"
|
||||
msgstr "{inviterName} <0>({inviterEmail})</0>"
|
||||
@ -254,6 +259,10 @@ msgstr "{inviterName} namens \"{teamName}\" heeft u uitgenodigd voor {0}<0/>\"{d
|
||||
msgid "{inviterName} on behalf of \"{teamName}\" has invited you to {action} {documentName}"
|
||||
msgstr "{inviterName} namens \"{teamName}\" heeft je uitgenodigd om {action} {documentName}"
|
||||
|
||||
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
|
||||
msgid "{MAXIMUM_PASSKEYS, plural, one {You cannot have more than # passkey.} other {You cannot have more than # passkeys.}}"
|
||||
msgstr "{MAXIMUM_PASSKEYS, plural, one {U kunt niet meer dan # toegangssleutel hebben.} other {U kunt niet meer dan # toegangssleutels hebben.}}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgid "{prefix} added a field"
|
||||
msgstr "{prefix} heeft een veld toegevoegd"
|
||||
@ -1231,6 +1240,7 @@ msgid "All templates"
|
||||
msgstr "Alle sjablonen"
|
||||
|
||||
#: apps/remix/app/components/general/period-selector.tsx
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "All Time"
|
||||
msgstr "Alle tijden"
|
||||
|
||||
@ -1312,6 +1322,10 @@ msgstr "Er bestaat al een e-mail met dit adres."
|
||||
msgid "An error occurred"
|
||||
msgstr "Er is een fout opgetreden"
|
||||
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "An error occurred during upload."
|
||||
msgstr "Er is een fout opgetreden tijdens het uploaden."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
msgid "An error occurred while adding fields."
|
||||
msgstr "Er is een fout opgetreden bij het toevoegen van velden."
|
||||
@ -1477,9 +1491,8 @@ msgstr "Er is een fout opgetreden bij het updaten van de handtekening."
|
||||
msgid "An error occurred while updating your profile."
|
||||
msgstr "Er is een fout opgetreden bij het updaten van uw profiel."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "An error occurred while uploading your document."
|
||||
msgstr "Er is een fout opgetreden bij het uploaden van uw document."
|
||||
|
||||
@ -1857,6 +1870,10 @@ msgstr "Zwart"
|
||||
msgid "Blue"
|
||||
msgstr "Blauw"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Bottom"
|
||||
msgstr "Onderkant"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Brand Details"
|
||||
msgstr "Merkgegevens"
|
||||
@ -2097,6 +2114,10 @@ msgstr "Cc-ers"
|
||||
msgid "Center"
|
||||
msgstr "Midden"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
msgid "Character limit"
|
||||
msgstr "Tekenlimiet"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
|
||||
msgid "Character Limit"
|
||||
@ -2263,6 +2284,7 @@ msgstr "Document Voltooien"
|
||||
msgid "Complete the fields for the following signers."
|
||||
msgstr "Vul de velden in voor de volgende ondertekenaars."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-jobs-table.tsx
|
||||
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
@ -2543,11 +2565,6 @@ msgstr "Ondertekeningslinks Kopiëren"
|
||||
msgid "Copy token"
|
||||
msgstr "Kopieer token"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
msgid "couldn't be uploaded:"
|
||||
msgstr "kon niet worden geüpload:"
|
||||
|
||||
#: apps/remix/app/routes/_profile+/_layout.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
|
||||
@ -2739,9 +2756,11 @@ msgstr "Maak uw account aan en begin met het gebruik van geavanceerde documenton
|
||||
#: apps/remix/app/components/tables/templates-table.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-teams-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-information.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-information.tsx
|
||||
@ -3222,6 +3241,10 @@ msgstr "Document \"{0}\" - Afwijzing Bevestigd"
|
||||
msgid "Document \"{0}\" Cancelled"
|
||||
msgstr "Document \"{0}\" Geannuleerd"
|
||||
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Document (Legacy)"
|
||||
msgstr "Document (Legacy)"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Document & Recipients"
|
||||
msgstr "Document & Ontvangers"
|
||||
@ -3354,6 +3377,10 @@ msgstr "Document gevonden in uw account"
|
||||
msgid "Document ID"
|
||||
msgstr "Document ID"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-information.tsx
|
||||
msgid "Document ID (Legacy)"
|
||||
msgstr "Document-ID (Legacy)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-status.tsx
|
||||
msgid "Document inbox"
|
||||
msgstr "Document Inkommand"
|
||||
@ -3478,14 +3505,14 @@ msgid "Document updated successfully"
|
||||
msgstr "Document succesvol bijgewerkt"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Document upload disabled due to unpaid invoices"
|
||||
msgstr "Documentupload uitgeschakeld vanwege onbetaalde facturen"
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Document uploaded"
|
||||
msgstr "Document Geüpload"
|
||||
|
||||
@ -3507,6 +3534,10 @@ msgctxt "Audit log format"
|
||||
msgid "Document visibility updated"
|
||||
msgstr "Zichtbaarheid van document bijgewerkt"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
msgid "Document Volume"
|
||||
msgstr "Documentvolume"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
|
||||
msgid "Document will be permanently deleted"
|
||||
msgstr "Document zal permanent worden verwijderd"
|
||||
@ -3520,6 +3551,8 @@ msgstr "Documentatie"
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.legacy_editor.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
#: apps/remix/app/components/general/user-profile-timur.tsx
|
||||
#: apps/remix/app/components/general/app-nav-mobile.tsx
|
||||
@ -3534,6 +3567,15 @@ msgstr "Documenten"
|
||||
msgid "Documents and resources related to this envelope."
|
||||
msgstr "Documenten en bronnen met betrekking tot deze envelop."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Documents Completed"
|
||||
msgstr "Voltooide documenten"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Documents Created"
|
||||
msgstr "Aangemaakte documenten"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates.$id._index.tsx
|
||||
msgid "Documents created from template"
|
||||
msgstr "Documenten gemaakt op basis van sjabloon"
|
||||
@ -3631,8 +3673,7 @@ msgstr "Sleep & zet hier je PDF neer."
|
||||
msgid "Drag and drop or click to upload"
|
||||
msgstr "Sleep en zet neer of klik om te uploaden"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Drag and drop your PDF file here"
|
||||
msgstr "Sleep en zet uw PDF-bestand hier neer"
|
||||
|
||||
@ -3736,6 +3777,7 @@ msgstr "Elektronische Handtekening bekendmaking"
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings._layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-recipient-item-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
@ -3925,6 +3967,10 @@ msgstr "Aangepaste branding inschakelen voor alle documenten in deze organisatie
|
||||
msgid "Enable custom branding for all documents in this team"
|
||||
msgstr "Aangepaste branding inschakelen voor alle documenten in dit team"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "Enable direct link signing"
|
||||
msgstr "Directe link ondertekenen inschakelen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
#: packages/lib/constants/template.ts
|
||||
msgid "Enable Direct Link Signing"
|
||||
@ -4073,6 +4119,8 @@ msgstr "Envelop bijgewerkt"
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
#: apps/remix/app/components/general/template/template-edit-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-signing/envelope-signer-page-renderer.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-signature-field.tsx
|
||||
@ -4096,8 +4144,7 @@ msgstr "Envelop bijgewerkt"
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
@ -4106,7 +4153,6 @@ msgstr "Envelop bijgewerkt"
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-edit-form.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
|
||||
@ -4254,7 +4300,6 @@ msgstr "Mislukt: {failedCount}"
|
||||
msgid "Feature Flags"
|
||||
msgstr "Functievlaggen"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-text-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
|
||||
msgid "Field character limit"
|
||||
msgstr "Veld tekenlimiet"
|
||||
@ -4311,19 +4356,17 @@ msgid "Fields updated"
|
||||
msgstr "Velden bijgewerkt"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
msgstr "Bestand mag niet groter zijn dan {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "File is larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
msgstr "Bestand is groter dan {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "File is too small"
|
||||
msgstr "Bestand is te klein"
|
||||
|
||||
@ -4402,6 +4445,7 @@ msgstr "Wachtwoord Vergeten?"
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Wachtwoord vergeten?"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
@ -4934,6 +4978,10 @@ msgstr "Word lid van {organisationName} op Documenso"
|
||||
msgid "Join our community on <0>Discord</0> for community support and discussion."
|
||||
msgstr "Word lid van onze community op <0>Discord</0> voor community ondersteuning en discussie."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Joined"
|
||||
msgstr "Toegetreden"
|
||||
|
||||
#. placeholder {0}: DateTime.fromJSDate(team.createdAt).toRelative({ style: 'short' })
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
msgid "Joined {0}"
|
||||
@ -4967,10 +5015,18 @@ msgstr "Laatste 14 dagen"
|
||||
msgid "Last 30 days"
|
||||
msgstr "Laatste 30 dagen"
|
||||
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last 30 Days"
|
||||
msgstr "Laatste 30 dagen"
|
||||
|
||||
#: apps/remix/app/components/general/period-selector.tsx
|
||||
msgid "Last 7 days"
|
||||
msgstr "Laatste 7 dagen"
|
||||
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last 90 Days"
|
||||
msgstr "Laatste 90 dagen"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
|
||||
msgid "Last Active"
|
||||
msgstr "Laatst actief"
|
||||
@ -5000,9 +5056,9 @@ msgstr "Laatst geüpdatet om"
|
||||
msgid "Last used"
|
||||
msgstr "Laatst gebruikt"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
msgid "Leaderboard"
|
||||
msgstr "Ranglijst"
|
||||
#: apps/remix/app/components/filters/date-range-filter.tsx
|
||||
msgid "Last Year"
|
||||
msgstr "Vorig jaar"
|
||||
|
||||
#: apps/remix/app/components/tables/user-organisations-table.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
@ -5028,6 +5084,14 @@ msgstr "Links"
|
||||
msgid "Legality of Electronic Signatures"
|
||||
msgstr "Geldigheid van Elektronische Handtekeningen"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Letter spacing"
|
||||
msgstr "Letterafstand"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Letter Spacing"
|
||||
msgstr "Letterafstand"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Light Mode"
|
||||
msgstr "Lichte Modus"
|
||||
@ -5036,6 +5100,14 @@ msgstr "Lichte Modus"
|
||||
msgid "Like to have your own public profile with agreements?"
|
||||
msgstr "Wil je je eigen openbare profiel met overeenkomsten?"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Line height"
|
||||
msgstr "Lijnhoogte"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Line Height"
|
||||
msgstr "Lijnhoogte"
|
||||
|
||||
#: packages/email/templates/confirm-team-email.tsx
|
||||
msgid "Link expires in 1 hour."
|
||||
msgstr "Link verloopt in 1 uur."
|
||||
@ -5315,7 +5387,10 @@ msgstr "Lid sinds"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings._layout.tsx
|
||||
#: apps/remix/app/components/tables/team-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
|
||||
msgid "Members"
|
||||
@ -5333,6 +5408,10 @@ msgstr "Bericht"
|
||||
msgid "Message <0>(Optional)</0>"
|
||||
msgstr "Bericht <0>(Optioneel)</0>"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Middle"
|
||||
msgstr "Midden"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-number-form.tsx
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
|
||||
msgid "Min"
|
||||
@ -5408,7 +5487,8 @@ msgstr "N.v.t."
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table.tsx
|
||||
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-recipient-item-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-document-jobs-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
@ -5475,7 +5555,6 @@ msgstr "Nooit verlopen"
|
||||
msgid "New Password"
|
||||
msgstr "Nieuw wachtwoord"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
msgid "New Template"
|
||||
msgstr "Nieuwe sjabloon"
|
||||
@ -5739,13 +5818,11 @@ msgstr "Alleen beheerders hebben toegang tot en kunnen het document bekijken"
|
||||
msgid "Only managers and above can access and view the document"
|
||||
msgstr "Alleen managers en hoger kunnen toegang krijgen tot en het document bekijken"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Only one file can be uploaded at a time"
|
||||
msgstr "Er kan slechts één bestand tegelijk worden geüpload"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Only PDF files are allowed"
|
||||
msgstr "Alleen PDF-bestanden zijn toegestaan"
|
||||
|
||||
@ -5813,6 +5890,11 @@ msgstr "Instellingen organisatiegroep"
|
||||
msgid "Organisation has been updated successfully"
|
||||
msgstr "Organisatie succesvol bijgewerkt"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-insights._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
msgid "Organisation Insights"
|
||||
msgstr "Organisatie-inzichten"
|
||||
|
||||
#: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx
|
||||
msgid "Organisation invitation"
|
||||
msgstr "Organisatie uitnodiging"
|
||||
@ -5909,6 +5991,7 @@ msgid "Organize your documents and templates"
|
||||
msgstr "Organiseer uw documenten en sjablonen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
msgctxt "Original document (adjective)"
|
||||
msgid "Original"
|
||||
msgstr "Origineel"
|
||||
|
||||
@ -5949,6 +6032,10 @@ msgstr "Pagina {0} van {1}"
|
||||
msgid "Page {0} of {numPages}"
|
||||
msgstr "Pagina {0} van {numPages}"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
msgid "Paid"
|
||||
msgstr "Betaald"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
msgid "Passkey"
|
||||
@ -6074,6 +6161,7 @@ msgid "per year"
|
||||
msgstr "per jaar"
|
||||
|
||||
#: apps/remix/app/components/tables/user-organisations-table.tsx
|
||||
msgctxt "Personal organisation (adjective)"
|
||||
msgid "Personal"
|
||||
msgstr "Persoonlijk"
|
||||
|
||||
@ -6273,7 +6361,6 @@ msgstr "Probeer een ander domein."
|
||||
msgid "Please try again and make sure you enter the correct email address."
|
||||
msgstr "Probeer opnieuw en zorg ervoor dat je het juiste e-mailadres invoert."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
msgid "Please try again later."
|
||||
msgstr "Probeer het later nog eens."
|
||||
@ -6439,6 +6526,7 @@ msgid "Read only"
|
||||
msgstr "Alleen lezen"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
#: packages/ui/components/document/envelope-recipient-field-tooltip.tsx
|
||||
msgid "Read Only"
|
||||
msgstr "Alleen lezen"
|
||||
|
||||
@ -6874,6 +6962,7 @@ msgstr "Rechts"
|
||||
#: apps/remix/app/components/tables/organisation-members-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-member-invites-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-groups-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisations-table.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
|
||||
@ -6936,7 +7025,6 @@ msgstr "Zoek op claim ID of naam"
|
||||
msgid "Search by document title"
|
||||
msgstr "Zoek op documenttitel"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
|
||||
msgid "Search by name or email"
|
||||
msgstr "Zoek op naam of e-mail"
|
||||
@ -6945,6 +7033,10 @@ msgstr "Zoek op naam of e-mail"
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
msgstr "Zoek op organisatienummer, naam, klant-ID of e-mail van eigenaar"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
msgid "Search by organisation name"
|
||||
msgstr "Zoek op organisatienaam"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-search.tsx
|
||||
msgid "Search documents..."
|
||||
msgstr "Documenten zoeken..."
|
||||
@ -7115,6 +7207,10 @@ msgstr "Selecteer de leden die in deze groep moeten worden opgenomen"
|
||||
msgid "Select triggers"
|
||||
msgstr "Selecteer triggers"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Select vertical align"
|
||||
msgstr "Selecteer verticale uitlijning"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-update-dialog.tsx
|
||||
msgid "Select visibility"
|
||||
msgstr "Selecteer zichtbaarheid"
|
||||
@ -7485,12 +7581,16 @@ msgstr "Handtekeningen verzameld"
|
||||
|
||||
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
#: packages/ui/components/document/envelope-recipient-field-tooltip.tsx
|
||||
#: packages/ui/components/document/document-read-only-fields.tsx
|
||||
msgid "Signed"
|
||||
msgstr "Ondertekend"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
|
||||
msgctxt "Signed document (adjective)"
|
||||
msgid "Signed"
|
||||
msgstr "Ondertekend"
|
||||
|
||||
#: packages/lib/constants/recipient-roles.ts
|
||||
msgctxt "Recipient role actioned"
|
||||
msgid "Signed"
|
||||
@ -7556,11 +7656,6 @@ msgstr "Ondertekeningslinks zijn gegenereerd voor dit document."
|
||||
msgid "Signing order is enabled."
|
||||
msgstr "Ondertekenvolgorde is ingeschakeld."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/leaderboard.tsx
|
||||
#: apps/remix/app/components/tables/admin-leaderboard-table.tsx
|
||||
msgid "Signing Volume"
|
||||
msgstr "Onderteken volume"
|
||||
|
||||
#: apps/remix/app/components/forms/signup.tsx
|
||||
msgid "Signups are disabled."
|
||||
msgstr "Registraties zijn uitgeschakeld."
|
||||
@ -7594,7 +7689,6 @@ msgstr "Enkele ondertekenaars hebben geen handtekeningenveld toegewezen gekregen
|
||||
#: apps/remix/app/components/tables/organisation-member-invites-table.tsx
|
||||
#: apps/remix/app/components/general/billing-plans.tsx
|
||||
#: apps/remix/app/components/general/billing-plans.tsx
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/teams/team-email-usage.tsx
|
||||
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
|
||||
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
|
||||
@ -7712,6 +7806,7 @@ msgstr "Statistieken"
|
||||
|
||||
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents._index.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-email-domains-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@ -7905,6 +8000,7 @@ msgstr "Systeemthema"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/components/tables/organisation-teams-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Team"
|
||||
msgstr "Team"
|
||||
|
||||
@ -7990,6 +8086,7 @@ msgstr "Teamleden"
|
||||
msgid "Team members have been added."
|
||||
msgstr "Teamleden zijn toegevoegd."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/forms/team-update-form.tsx
|
||||
#: apps/remix/app/components/dialogs/team-create-dialog.tsx
|
||||
msgid "Team Name"
|
||||
@ -8034,6 +8131,9 @@ msgstr "Team URL"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.teams.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings._layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/dashboard.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/admin-organisation-overview-table.tsx
|
||||
#: apps/remix/app/components/general/org-menu-switcher.tsx
|
||||
msgid "Teams"
|
||||
msgstr "Teams"
|
||||
@ -8056,6 +8156,11 @@ msgstr "Teams waaraan deze organisatiegroep momenteel is toegewezen"
|
||||
msgid "Template"
|
||||
msgstr "Sjabloon"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-create-dialog.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Template (Legacy)"
|
||||
msgstr "Sjabloon (Legacy)"
|
||||
|
||||
#: apps/remix/app/routes/embed+/v1+/authoring_.completed.create.tsx
|
||||
msgid "Template Created"
|
||||
msgstr "Sjabloon Gemaakt"
|
||||
@ -8084,6 +8189,10 @@ msgstr "Sjabloon is verwijderd van je openbare profiel."
|
||||
msgid "Template has been updated."
|
||||
msgstr "Sjabloon is bijgewerkt."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-page-view-information.tsx
|
||||
msgid "Template ID (Legacy)"
|
||||
msgstr "Sjabloon-ID (Legacy)"
|
||||
|
||||
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
|
||||
msgid "Template is using legacy field insertion"
|
||||
msgstr "Sjabloon maakt gebruik van verouderde veldinvoeging"
|
||||
@ -8108,8 +8217,8 @@ msgstr "Sjabloontitel"
|
||||
msgid "Template updated successfully"
|
||||
msgstr "Sjabloon succesvol bijgewerkt"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Template uploaded"
|
||||
msgstr "Sjabloon geüpload"
|
||||
|
||||
@ -8266,9 +8375,8 @@ msgstr "Het document dat u zoekt, kon niet worden gevonden."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.edit.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
|
||||
msgid "The document you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Het document dat u zoekt, is mogelijk verwijderd, hernoemd of heeft nooit bestaan."
|
||||
msgid "The document you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Het document dat u zoekt, kan zijn verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: packages/ui/components/document/document-send-email-message-helper.tsx
|
||||
msgid "The document's name"
|
||||
@ -8279,9 +8387,8 @@ msgid "The email address which will show up in the \"Reply To\" field in emails"
|
||||
msgstr "Het e-mailadres dat in het \"Antwoord aan\" veld in e-mails verschijnt"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
|
||||
msgid "The email domain you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Het e-maildomein dat u zoekt kan zijn verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
msgid "The email domain you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Het e-maildomein dat u zoekt, kan zijn verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
msgid "The email or password provided is incorrect"
|
||||
@ -8337,23 +8444,17 @@ msgid "The organisation email has been created successfully."
|
||||
msgstr "Het organisatie-e-mail is succesvol aangemaakt."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
msgid "The organisation group you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "De organisatiegroep die u zoekt, is mogelijk verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
msgid "The organisation group you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "De organisatiewerkgroep die u zoekt, kan zijn verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
msgid "The organisation role that will be applied to all members in this group."
|
||||
msgstr "De organisatierol die op alle leden in deze groep zal worden toegepast."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "De organisatie die u zoekt, is mogelijk verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/_layout.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "De organisatie die u zoekt, is mogelijk verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "The organisation you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "De organisatie die u zoekt, kan zijn verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: apps/remix/app/components/general/generic-error-layout.tsx
|
||||
msgid "The page you are looking for was moved, removed, renamed or might never have existed."
|
||||
@ -8444,15 +8545,9 @@ msgid "The team email <0>{teamEmail}</0> has been removed from the following tea
|
||||
msgstr "Het team e-mail <0>{teamEmail}</0> is verwijderd uit het volgende team"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/_layout.tsx
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Het team dat u zoekt, is mogelijk verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/_layout.tsx
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "Het team dat u zoekt, is mogelijk verwijderd of hernoemd, of heeft mogelijk nooit\n"
|
||||
" bestaan."
|
||||
msgid "The team you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Het team dat u zoekt, kan zijn verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
|
||||
msgid "The template has been moved successfully."
|
||||
@ -8467,9 +8562,8 @@ msgid "The template you are looking for could not be found."
|
||||
msgstr "De sjabloon die u zoekt, kon niet worden gevonden."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates.$id._index.tsx
|
||||
msgid "The template you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "De sjabloon die u zoekt, is mogelijk verwijderd, hernoemd of heeft nooit bestaan."
|
||||
msgid "The template you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "Het sjabloon dat u zoekt, kan zijn verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "The test webhook has been successfully sent to your endpoint."
|
||||
@ -8509,9 +8603,8 @@ msgid "The URL for Documenso to send webhook events to."
|
||||
msgstr "De URL voor Documenso om webhook-gebeurtenissen naar toe te sturen."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx
|
||||
msgid "The user you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "De gebruiker die u zoekt, is mogelijk verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
msgid "The user you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "De gebruiker die u zoekt, kan zijn verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-user-reset-two-factor-dialog.tsx
|
||||
msgid "The user's two factor authentication has been reset successfully."
|
||||
@ -8530,9 +8623,8 @@ msgid "The webhook was successfully created."
|
||||
msgstr "De webhook is succesvol aangemaakt."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id.tsx
|
||||
msgid "The webhook you are looking for may have been removed, renamed or may have never\n"
|
||||
" existed."
|
||||
msgstr "De webhook die u zoekt, kan zijn verwijderd, hernoemd of mogelijk nooit hebben bestaan."
|
||||
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
|
||||
msgstr "De webhook die u zoekt, kan zijn verwijderd, hernoemd of heeft mogelijk nooit bestaan."
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
|
||||
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
|
||||
@ -8588,10 +8680,6 @@ msgstr "Deze actie is omkeerbaar, maar wees voorzichtig, omdat het account mogel
|
||||
msgid "This claim is locked and cannot be deleted."
|
||||
msgstr "Deze aanspraak is vergrendeld en kan niet worden verwijderd."
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "This code will expire in {expiresInMinutes} minutes."
|
||||
msgstr "Deze code verloopt over {expiresInMinutes} minuten."
|
||||
|
||||
#: packages/email/template-components/template-document-super-delete.tsx
|
||||
msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
|
||||
msgstr "Dit document kan niet worden hersteld, als u de reden voor toekomstige documenten wilt betwisten, neem dan contact op met de ondersteuning."
|
||||
@ -8837,6 +8925,7 @@ msgstr "Tijdzone"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents._index.tsx
|
||||
#: apps/remix/app/components/tables/templates-table.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/general/template/template-page-view-documents-table.tsx
|
||||
@ -8849,6 +8938,19 @@ msgstr "Titel"
|
||||
msgid "Title cannot be empty"
|
||||
msgstr "Titel mag niet leeg zijn"
|
||||
|
||||
#. placeholder {0}: actionVerb.toLowerCase()
|
||||
#. placeholder {1}: actionTarget.toLowerCase()
|
||||
#. placeholder {2}: recipient.email
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To {0} this {1}, you need to be logged in as <0>{2}</0>"
|
||||
msgstr "Om {0} deze {1} te kunnen uitvoeren, moet u ingelogd zijn als <0>{2}</0>"
|
||||
|
||||
#. placeholder {0}: actionVerb.toLowerCase()
|
||||
#. placeholder {1}: actionTarget.toLowerCase()
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To {0} this {1}, you need to be logged in."
|
||||
msgstr "Om {0} deze {1} te kunnen uitvoeren, moet u ingelogd zijn."
|
||||
|
||||
#: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx
|
||||
msgid "To accept this invitation you must create an account."
|
||||
msgstr "Om deze uitnodiging te accepteren moet u een account aanmaken."
|
||||
@ -8889,6 +8991,10 @@ msgstr "Om toegang te krijgen tot uw account, bevestig uw e-mailadres door op de
|
||||
msgid "To mark this document as viewed, you need to be logged in as <0>{0}</0>"
|
||||
msgstr "Om dit document als bekeken te markeren, moet u zijn ingelogd als <0>{0}</0>"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx
|
||||
msgid "To mark this document as viewed, you need to be logged in."
|
||||
msgstr "Om dit document als bekeken te markeren, moet u ingelogd zijn."
|
||||
|
||||
#. placeholder {0}: emptyCheckboxFields.length > 0 ? 'Checkbox' : emptyRadioFields.length > 0 ? 'Radio' : 'Select'
|
||||
#. placeholder {0}: emptyCheckboxFields.length > 0 ? 'Checkbox' : emptyRadioFields.length > 0 ? 'Radio' : 'Select'
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx
|
||||
@ -8944,6 +9050,10 @@ msgstr "Token is verlopen. Probeer het opnieuw."
|
||||
msgid "Token name"
|
||||
msgstr "Tokennaam"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Top"
|
||||
msgstr "Bovenkant"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
|
||||
msgid "Total Documents"
|
||||
msgstr "Totaal aantal documenten"
|
||||
@ -9123,8 +9233,7 @@ msgstr "Onvoltooid"
|
||||
msgid "Unknown"
|
||||
msgstr "Onbekend"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Unknown error"
|
||||
msgstr "Onbekende fout"
|
||||
|
||||
@ -9282,7 +9391,7 @@ msgstr "Wachtwoord bijwerken..."
|
||||
msgid "Updating Your Information"
|
||||
msgstr "Uw Informatie Bijwerken"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "Upgrade"
|
||||
msgstr "Upgrade"
|
||||
@ -9292,7 +9401,7 @@ msgstr "Upgrade"
|
||||
msgid "Upgrade <0>{0}</0> to {planName}"
|
||||
msgstr "Gebruik uw toegangssleutel voor authenticatie"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Upgrade your plan to upload more documents"
|
||||
msgstr "Upgrade je plan om meer documenten te uploaden"
|
||||
|
||||
@ -9334,9 +9443,9 @@ msgstr "Aangepast document uploaden"
|
||||
msgid "Upload disabled"
|
||||
msgstr "Uploaden uitgeschakeld"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Upload Document"
|
||||
msgstr "Document uploaden"
|
||||
|
||||
@ -9344,14 +9453,9 @@ msgstr "Document uploaden"
|
||||
msgid "Upload documents and add recipients"
|
||||
msgstr "Documenten uploaden en ontvangers toevoegen"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
msgid "Upload Envelope"
|
||||
msgstr "Upload envelop"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Upload failed"
|
||||
msgstr "Uploaden mislukt"
|
||||
|
||||
@ -9359,11 +9463,11 @@ msgstr "Uploaden mislukt"
|
||||
msgid "Upload Signature"
|
||||
msgstr "Handtekening uploaden"
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
msgid "Upload Template"
|
||||
msgstr "Upload Sjabloon"
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "Upload Template Document"
|
||||
msgstr "Sjabloondocument uploaden"
|
||||
@ -9390,17 +9494,10 @@ msgid "Uploaded file not an allowed file type"
|
||||
msgstr "Geüpload bestand is geen toegestaan bestandsformaat"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Uploading"
|
||||
msgstr "Uploaden"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
msgid "Uploading document..."
|
||||
msgstr "Document uploaden..."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
msgid "Uploading template..."
|
||||
msgstr "Sjabloon uploaden..."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-attachments-popover.tsx
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
@ -9473,6 +9570,7 @@ msgid "User with this email already exists. Please use a different email address
|
||||
msgstr "Er bestaat al een gebruiker met dit e-mailadres. Gebruik een ander e-mailadres."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
msgid "Users"
|
||||
msgstr "Gebruikers"
|
||||
|
||||
@ -9495,6 +9593,10 @@ msgstr "Validatie mislukt"
|
||||
msgid "Value"
|
||||
msgstr "Waarde"
|
||||
|
||||
#: packages/lib/types/field-meta.ts
|
||||
msgid "Value must be a number"
|
||||
msgstr "Waarde moet een getal zijn"
|
||||
|
||||
#: packages/email/template-components/template-access-auth-2fa.tsx
|
||||
msgid "Verification Code Required"
|
||||
msgstr "Verificatiecode vereist"
|
||||
@ -9527,8 +9629,8 @@ msgstr "Verifieer uw e-mailadres"
|
||||
msgid "Verify your email address to unlock all features."
|
||||
msgstr "Verifieer uw e-mailadres om alle functies te ontgrendelen."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Verify your email to upload documents."
|
||||
msgstr "Verifieer uw e-mail om documenten te uploaden."
|
||||
|
||||
@ -9542,6 +9644,10 @@ msgstr "Verifieer uw e-mailadres van het team"
|
||||
msgid "Vertical"
|
||||
msgstr "Verticaal"
|
||||
|
||||
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
|
||||
msgid "Vertical Align"
|
||||
msgstr "Verticale uitlijning"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@ -10394,10 +10500,6 @@ msgstr "U kunt geen groep wijzigen die een hogere rol heeft dan u."
|
||||
msgid "You cannot delete this item because the document has been sent to recipients"
|
||||
msgstr "U kunt dit item niet verwijderen omdat het document naar ontvangers is verzonden"
|
||||
|
||||
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
|
||||
msgid "You cannot have more than {MAXIMUM_PASSKEYS} passkeys."
|
||||
msgstr "Je kunt niet meer dan {MAXIMUM_PASSKEYS} toegangssleutels hebben."
|
||||
|
||||
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
|
||||
msgid "You cannot modify a group which has a higher role than you."
|
||||
msgstr "U kunt geen organisatielid wijzigen die een hogere rol heeft dan u."
|
||||
@ -10414,20 +10516,21 @@ msgstr "Je kunt een teamlid met een hogere rol dan jezelf niet wijzigen."
|
||||
msgid "You cannot remove members from this team if the inherit member feature is enabled."
|
||||
msgstr "U heeft momenteel een inactief <0>{currentProductName}</0> abonnement."
|
||||
|
||||
#: packages/ui/primitives/document-upload.tsx
|
||||
#: packages/ui/primitives/document-upload-button.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "You cannot upload documents at this time."
|
||||
msgstr "Op dit moment kunt u geen documenten uploaden."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You cannot upload encrypted PDFs"
|
||||
msgstr "Je kunt geen versleutelde PDF's uploaden"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "You cannot upload more than {maximumEnvelopeItemCount} items per envelope."
|
||||
msgstr "U kunt niet meer dan {maximumEnvelopeItemCount} items per envelop uploaden."
|
||||
|
||||
@ -10503,9 +10606,9 @@ msgstr "Je hebt nog geen sjablonen gemaakt. Om een sjabloon te maken, upload er
|
||||
msgid "You have not yet created or received any documents. To create a document please upload one."
|
||||
msgstr "Je hebt nog geen documenten gemaakt of ontvangen. Om een document te maken, upload er een."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You have reached the limit of the number of files per envelope"
|
||||
msgstr "U heeft de limiet van het aantal bestanden per envelop bereikt"
|
||||
|
||||
@ -10518,14 +10621,14 @@ msgstr "Je hebt de maximale limiet van {0} directe sjablonen bereikt. <0>Upgrade
|
||||
msgid "You have reached the maximum number of teams for your plan. Please contact sales at <0>{SUPPORT_EMAIL}</0> if you would like to adjust your plan."
|
||||
msgstr "U heeft het maximale aantal teams voor uw plan bereikt. Neem contact op met de verkoopafdeling via <0>{SUPPORT_EMAIL}</0> als u uw plan wilt aanpassen."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "You have reached your document limit for this month. Please upgrade your plan."
|
||||
msgstr "U heeft uw documentlimiet voor deze maand bereikt. Upgrade uw abonnement."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: packages/ui/primitives/document-dropzone.tsx
|
||||
msgid "You have reached your document limit."
|
||||
msgstr "Je hebt jouw documentlimiet bereikt."
|
||||
@ -10715,7 +10818,7 @@ msgstr "Uw huidige abonnement is verlopen."
|
||||
msgid "Your direct signing templates"
|
||||
msgstr "Jouw directe ondertekeningssjablonen"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
|
||||
msgid "Your document failed to upload."
|
||||
msgstr "Het uploaden van je document is mislukt."
|
||||
@ -10744,9 +10847,9 @@ msgstr "Je document is succesvol verzonden."
|
||||
msgid "Your document has been successfully duplicated."
|
||||
msgstr "Jouw document is succesvol gedupliceerd."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
msgid "Your document has been uploaded successfully."
|
||||
msgstr "Je document is succesvol geüpload."
|
||||
|
||||
@ -10897,14 +11000,11 @@ msgstr "Jouw sjabloon is succesvol gedupliceerd."
|
||||
msgid "Your template has been successfully deleted."
|
||||
msgstr "Jouw sjabloon is succesvol verwijderd."
|
||||
|
||||
#: apps/remix/app/components/general/document/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
|
||||
msgid "Your template has been uploaded successfully."
|
||||
msgstr "Uw sjabloon is succesvol geüpload."
|
||||
|
||||
#: apps/remix/app/components/general/template/template-drop-zone-wrapper.tsx
|
||||
msgid "Your template has been uploaded successfully. You will be redirected to the template page."
|
||||
msgstr "Uw sjabloon is succesvol geüpload. U wordt doorgestuurd naar de sjabloonpagina."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
|
||||
msgid "Your template will be duplicated."
|
||||
msgstr "Jouw sjabloon zal worden gedupliceerd."
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
11043
packages/lib/translations/zh/web.po
Normal file
11043
packages/lib/translations/zh/web.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,46 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { FieldType } from '@prisma/client';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { DEFAULT_SIGNATURE_TEXT_FONT_SIZE } from '../constants/pdf';
|
||||
|
||||
export const DEFAULT_FIELD_FONT_SIZE = 14;
|
||||
export const FIELD_DEFAULT_GENERIC_VERTICAL_ALIGN = 'middle';
|
||||
export const FIELD_DEFAULT_GENERIC_ALIGN = 'left';
|
||||
export const FIELD_DEFAULT_LINE_HEIGHT = 1;
|
||||
export const FIELD_DEFAULT_LETTER_SPACING = 0;
|
||||
|
||||
export const FIELD_MIN_LINE_HEIGHT = 1;
|
||||
export const FIELD_MAX_LINE_HEIGHT = 10;
|
||||
|
||||
export const FIELD_MIN_LETTER_SPACING = 0;
|
||||
export const FIELD_MAX_LETTER_SPACING = 100;
|
||||
|
||||
export const DEFAULT_FIELD_FONT_SIZE = 12;
|
||||
|
||||
/**
|
||||
* Grouped field types that use the same generic text rendering function.
|
||||
*/
|
||||
export type GenericTextFieldTypeMetas =
|
||||
| TInitialsFieldMeta
|
||||
| TNameFieldMeta
|
||||
| TEmailFieldMeta
|
||||
| TDateFieldMeta
|
||||
| TTextFieldMeta
|
||||
| TNumberFieldMeta;
|
||||
|
||||
const ZFieldMetaLineHeight = z.coerce
|
||||
.number()
|
||||
.min(FIELD_MIN_LINE_HEIGHT)
|
||||
.max(FIELD_MAX_LINE_HEIGHT)
|
||||
.describe('The line height of the text');
|
||||
const ZFieldMetaLetterSpacing = z.coerce
|
||||
.number()
|
||||
.min(FIELD_MIN_LETTER_SPACING)
|
||||
.max(FIELD_MAX_LETTER_SPACING)
|
||||
.describe('The spacing between each character');
|
||||
const ZFieldMetaVerticalAlign = z
|
||||
.enum(['top', 'middle', 'bottom'])
|
||||
.describe('The vertical alignment of the text');
|
||||
|
||||
export const ZBaseFieldMeta = z.object({
|
||||
label: z.string().optional(),
|
||||
@ -50,8 +87,14 @@ export type TDateFieldMeta = z.infer<typeof ZDateFieldMeta>;
|
||||
export const ZTextFieldMeta = ZBaseFieldMeta.extend({
|
||||
type: z.literal('text'),
|
||||
text: z.string().optional(),
|
||||
characterLimit: z.number().optional(),
|
||||
characterLimit: z.coerce
|
||||
.number({ invalid_type_error: msg`Value must be a number`.id })
|
||||
.min(0)
|
||||
.optional(),
|
||||
textAlign: ZFieldTextAlignSchema.optional(),
|
||||
lineHeight: ZFieldMetaLineHeight.nullish(),
|
||||
letterSpacing: ZFieldMetaLetterSpacing.nullish(),
|
||||
verticalAlign: ZFieldMetaVerticalAlign.nullish(),
|
||||
});
|
||||
|
||||
export type TTextFieldMeta = z.infer<typeof ZTextFieldMeta>;
|
||||
@ -63,6 +106,9 @@ export const ZNumberFieldMeta = ZBaseFieldMeta.extend({
|
||||
minValue: z.coerce.number().nullish(),
|
||||
maxValue: z.coerce.number().nullish(),
|
||||
textAlign: ZFieldTextAlignSchema.optional(),
|
||||
lineHeight: ZFieldMetaLineHeight.nullish(),
|
||||
letterSpacing: ZFieldMetaLetterSpacing.nullish(),
|
||||
verticalAlign: ZFieldMetaVerticalAlign.nullish(),
|
||||
});
|
||||
|
||||
export type TNumberFieldMeta = z.infer<typeof ZNumberFieldMeta>;
|
||||
@ -326,3 +372,52 @@ export const FIELD_META_DEFAULT_VALUES: Record<FieldType, TFieldMetaSchema> = {
|
||||
[FieldType.CHECKBOX]: FIELD_CHECKBOX_META_DEFAULT_VALUES,
|
||||
[FieldType.DROPDOWN]: FIELD_DROPDOWN_META_DEFAULT_VALUES,
|
||||
} as const;
|
||||
|
||||
export const ZEnvelopeFieldAndMetaSchema = z.discriminatedUnion('type', [
|
||||
z.object({
|
||||
type: z.literal(FieldType.SIGNATURE),
|
||||
fieldMeta: ZSignatureFieldMeta.optional().default(FIELD_SIGNATURE_META_DEFAULT_VALUES),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.FREE_SIGNATURE),
|
||||
fieldMeta: z.undefined(),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.INITIALS),
|
||||
fieldMeta: ZInitialsFieldMeta.optional().default(FIELD_INITIALS_META_DEFAULT_VALUES),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.NAME),
|
||||
fieldMeta: ZNameFieldMeta.optional().default(FIELD_NAME_META_DEFAULT_VALUES),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.EMAIL),
|
||||
fieldMeta: ZEmailFieldMeta.optional().default(FIELD_EMAIL_META_DEFAULT_VALUES),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.DATE),
|
||||
fieldMeta: ZDateFieldMeta.optional().default(FIELD_DATE_META_DEFAULT_VALUES),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.TEXT),
|
||||
fieldMeta: ZTextFieldMeta.optional().default(FIELD_TEXT_META_DEFAULT_VALUES),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.NUMBER),
|
||||
fieldMeta: ZNumberFieldMeta.optional().default(FIELD_NUMBER_META_DEFAULT_VALUES),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.RADIO),
|
||||
fieldMeta: ZRadioFieldMeta.optional().default(FIELD_RADIO_META_DEFAULT_VALUES),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.CHECKBOX),
|
||||
fieldMeta: ZCheckboxFieldMeta.optional().default(FIELD_CHECKBOX_META_DEFAULT_VALUES),
|
||||
}),
|
||||
z.object({
|
||||
type: z.literal(FieldType.DROPDOWN),
|
||||
fieldMeta: ZDropdownFieldMeta.optional().default(FIELD_DROPDOWN_META_DEFAULT_VALUES),
|
||||
}),
|
||||
]);
|
||||
|
||||
type TEnvelopeFieldAndMeta = z.infer<typeof ZEnvelopeFieldAndMetaSchema>;
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
export type DateRange = 'last30days' | 'last90days' | 'lastYear' | 'allTime';
|
||||
|
||||
/**
|
||||
* Backend only schema is used for find search params.
|
||||
*
|
||||
|
||||
@ -9,7 +9,7 @@ import type { FieldToRender, RenderFieldElementOptions } from './field-renderer'
|
||||
import { calculateFieldPosition } from './field-renderer';
|
||||
|
||||
export const konvaTextFontFamily =
|
||||
'Noto Sans, Noto Sans Japanese, Noto Sans Chinese, Noto Sans Korean, sans-serif';
|
||||
'"Noto Sans", "Noto Sans Japanese", "Noto Sans Chinese", "Noto Sans Korean", sans-serif';
|
||||
export const konvaTextFill = 'black';
|
||||
|
||||
export const upsertFieldGroup = (
|
||||
|
||||
@ -26,7 +26,7 @@ export const renderCheckboxFieldElement = (
|
||||
field: FieldToRender,
|
||||
options: RenderFieldElementOptions,
|
||||
) => {
|
||||
const { pageWidth, pageHeight, pageLayer, mode } = options;
|
||||
const { pageWidth, pageHeight, pageLayer, mode, color } = options;
|
||||
|
||||
const { fieldWidth, fieldHeight } = calculateFieldPosition(field, pageWidth, pageHeight);
|
||||
|
||||
@ -210,7 +210,9 @@ export const renderCheckboxFieldElement = (
|
||||
fieldGroup.add(text);
|
||||
});
|
||||
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
if (color !== 'readOnly' && mode !== 'export') {
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
}
|
||||
|
||||
return {
|
||||
fieldGroup,
|
||||
|
||||
@ -50,7 +50,7 @@ export const renderDropdownFieldElement = (
|
||||
field: FieldToRender,
|
||||
options: RenderFieldElementOptions,
|
||||
) => {
|
||||
const { pageWidth, pageHeight, pageLayer, mode, translations } = options;
|
||||
const { pageWidth, pageHeight, pageLayer, mode, translations, color } = options;
|
||||
|
||||
const { fieldWidth, fieldHeight } = calculateFieldPosition(field, pageWidth, pageHeight);
|
||||
|
||||
@ -74,6 +74,21 @@ export const renderDropdownFieldElement = (
|
||||
|
||||
const fontSize = dropdownMeta?.fontSize || DEFAULT_STANDARD_FONT_SIZE;
|
||||
|
||||
// Don't show any labels when exporting.
|
||||
if (mode === 'export') {
|
||||
selectedValue = '';
|
||||
}
|
||||
|
||||
// Render the default value if readonly.
|
||||
if (
|
||||
dropdownMeta?.readOnly &&
|
||||
dropdownMeta.defaultValue &&
|
||||
dropdownMeta.values &&
|
||||
dropdownMeta.values.some((value) => value.value === dropdownMeta.defaultValue)
|
||||
) {
|
||||
selectedValue = dropdownMeta.defaultValue;
|
||||
}
|
||||
|
||||
if (field.inserted) {
|
||||
selectedValue = field.customText;
|
||||
}
|
||||
@ -166,7 +181,9 @@ export const renderDropdownFieldElement = (
|
||||
pageLayer.batchDraw();
|
||||
});
|
||||
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
if (color !== 'readOnly' && mode !== 'export') {
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
}
|
||||
|
||||
return {
|
||||
fieldGroup,
|
||||
|
||||
@ -77,6 +77,7 @@ export const renderField = ({
|
||||
scale,
|
||||
};
|
||||
|
||||
// If the generic text field element array changes, update the `GenericTextFieldTypeMetas` type
|
||||
return match(field.type)
|
||||
.with(
|
||||
FieldType.INITIALS,
|
||||
|
||||
@ -1,7 +1,13 @@
|
||||
import Konva from 'konva';
|
||||
|
||||
import { DEFAULT_STANDARD_FONT_SIZE } from '../../constants/pdf';
|
||||
import type { TTextFieldMeta } from '../../types/field-meta';
|
||||
import type { GenericTextFieldTypeMetas } from '../../types/field-meta';
|
||||
import {
|
||||
FIELD_DEFAULT_GENERIC_ALIGN,
|
||||
FIELD_DEFAULT_GENERIC_VERTICAL_ALIGN,
|
||||
FIELD_DEFAULT_LETTER_SPACING,
|
||||
FIELD_DEFAULT_LINE_HEIGHT,
|
||||
} from '../../types/field-meta';
|
||||
import {
|
||||
createFieldHoverInteraction,
|
||||
konvaTextFill,
|
||||
@ -12,14 +18,14 @@ import {
|
||||
import type { FieldToRender, RenderFieldElementOptions } from './field-renderer';
|
||||
import { calculateFieldPosition } from './field-renderer';
|
||||
|
||||
const DEFAULT_TEXT_ALIGN = 'left';
|
||||
const DEFAULT_TEXT_X_PADDING = 6;
|
||||
|
||||
const upsertFieldText = (field: FieldToRender, options: RenderFieldElementOptions): Konva.Text => {
|
||||
const { pageWidth, pageHeight, mode = 'edit', pageLayer, translations } = options;
|
||||
|
||||
const { fieldWidth, fieldHeight } = calculateFieldPosition(field, pageWidth, pageHeight);
|
||||
|
||||
const textMeta = field.fieldMeta as TTextFieldMeta | undefined;
|
||||
const fieldMeta = field.fieldMeta as GenericTextFieldTypeMetas | undefined;
|
||||
|
||||
const fieldTypeName = translations?.[field.type] || field.type;
|
||||
|
||||
@ -33,53 +39,77 @@ const upsertFieldText = (field: FieldToRender, options: RenderFieldElementOption
|
||||
// Calculate text positioning based on alignment
|
||||
const textX = 0;
|
||||
const textY = 0;
|
||||
let textAlign: 'left' | 'center' | 'right' = textMeta?.textAlign || DEFAULT_TEXT_ALIGN;
|
||||
const textVerticalAlign: 'top' | 'middle' | 'bottom' = 'middle';
|
||||
const textFontSize = textMeta?.fontSize || DEFAULT_STANDARD_FONT_SIZE;
|
||||
const textPadding = 10;
|
||||
const textFontSize = fieldMeta?.fontSize || DEFAULT_STANDARD_FONT_SIZE;
|
||||
|
||||
let textToRender: string = fieldTypeName;
|
||||
// By default, render the field name or label centered
|
||||
let textToRender: string = fieldMeta?.label || fieldTypeName;
|
||||
let textAlign: 'left' | 'center' | 'right' = 'center';
|
||||
let textVerticalAlign: 'top' | 'middle' | 'bottom' = FIELD_DEFAULT_GENERIC_VERTICAL_ALIGN;
|
||||
let textLineHeight = FIELD_DEFAULT_LINE_HEIGHT;
|
||||
let textLetterSpacing = FIELD_DEFAULT_LETTER_SPACING;
|
||||
|
||||
// Handle edit mode.
|
||||
if (mode === 'edit') {
|
||||
if (textMeta?.text) {
|
||||
textToRender = textMeta.text;
|
||||
} else {
|
||||
// Show field name which is centered for the edit mode if no label/text is avaliable.
|
||||
textToRender = textMeta?.label || fieldTypeName;
|
||||
textAlign = 'center';
|
||||
// Render default values for text/number if provided for editing mode.
|
||||
if (mode === 'edit' && (fieldMeta?.type === 'text' || fieldMeta?.type === 'number')) {
|
||||
const value = fieldMeta?.type === 'text' ? fieldMeta.text : fieldMeta.value;
|
||||
|
||||
if (value) {
|
||||
textToRender = value;
|
||||
|
||||
textVerticalAlign = fieldMeta.verticalAlign || FIELD_DEFAULT_GENERIC_VERTICAL_ALIGN;
|
||||
textAlign = fieldMeta.textAlign || FIELD_DEFAULT_GENERIC_ALIGN;
|
||||
textLetterSpacing = fieldMeta.letterSpacing || FIELD_DEFAULT_LETTER_SPACING;
|
||||
textLineHeight = fieldMeta.lineHeight || FIELD_DEFAULT_LINE_HEIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle sign mode.
|
||||
if (mode === 'sign' || mode === 'export') {
|
||||
if (!field.inserted) {
|
||||
if (textMeta?.text) {
|
||||
textToRender = textMeta.text;
|
||||
} else if (mode === 'sign') {
|
||||
// Only show the field name in sign mode if no text/label is avaliable.
|
||||
textToRender = textMeta?.label || fieldTypeName;
|
||||
textAlign = 'center';
|
||||
}
|
||||
}
|
||||
// Default to blank for export mode since we want to ensure we don't show
|
||||
// any placeholder text or labels unless actually it's inserted.
|
||||
if (mode === 'export') {
|
||||
textToRender = '';
|
||||
}
|
||||
|
||||
if (field.inserted) {
|
||||
textToRender = field.customText;
|
||||
// Fallback render readonly fields if prefilled value exists.
|
||||
if (field?.fieldMeta?.readOnly && (fieldMeta?.type === 'text' || fieldMeta?.type === 'number')) {
|
||||
const value = fieldMeta?.type === 'text' ? fieldMeta.text : fieldMeta.value;
|
||||
|
||||
if (value) {
|
||||
textToRender = value;
|
||||
|
||||
textVerticalAlign = fieldMeta.verticalAlign || FIELD_DEFAULT_GENERIC_VERTICAL_ALIGN;
|
||||
textAlign = fieldMeta.textAlign || FIELD_DEFAULT_GENERIC_ALIGN;
|
||||
textLetterSpacing = fieldMeta.letterSpacing || FIELD_DEFAULT_LETTER_SPACING;
|
||||
textLineHeight = fieldMeta.lineHeight || FIELD_DEFAULT_LINE_HEIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
// Override everything with value if it's inserted.
|
||||
if (field.inserted) {
|
||||
textToRender = field.customText;
|
||||
|
||||
textAlign = fieldMeta?.textAlign || FIELD_DEFAULT_GENERIC_ALIGN;
|
||||
|
||||
if (fieldMeta?.type === 'text' || fieldMeta?.type === 'number') {
|
||||
textVerticalAlign = fieldMeta.verticalAlign || FIELD_DEFAULT_GENERIC_VERTICAL_ALIGN;
|
||||
textLetterSpacing = fieldMeta.letterSpacing || FIELD_DEFAULT_LETTER_SPACING;
|
||||
textLineHeight = fieldMeta.lineHeight || FIELD_DEFAULT_LINE_HEIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
// Note: Do not use native text padding since it's uniform.
|
||||
// We only want to have padding on the left and right hand sides.
|
||||
fieldText.setAttrs({
|
||||
x: textX,
|
||||
x: textX + DEFAULT_TEXT_X_PADDING,
|
||||
y: textY,
|
||||
verticalAlign: textVerticalAlign,
|
||||
wrap: 'word',
|
||||
padding: textPadding,
|
||||
text: textToRender,
|
||||
fontSize: textFontSize,
|
||||
align: textAlign,
|
||||
lineHeight: textLineHeight,
|
||||
letterSpacing: textLetterSpacing,
|
||||
fontFamily: konvaTextFontFamily,
|
||||
fill: konvaTextFill,
|
||||
align: textAlign,
|
||||
width: fieldWidth,
|
||||
width: fieldWidth - DEFAULT_TEXT_X_PADDING * 2,
|
||||
height: fieldHeight,
|
||||
} satisfies Partial<Konva.TextConfig>);
|
||||
|
||||
@ -90,7 +120,7 @@ export const renderGenericTextFieldElement = (
|
||||
field: FieldToRender,
|
||||
options: RenderFieldElementOptions,
|
||||
) => {
|
||||
const { mode = 'edit', pageLayer } = options;
|
||||
const { mode = 'edit', pageLayer, color } = options;
|
||||
|
||||
const isFirstRender = !pageLayer.findOne(`#${field.renderId}`);
|
||||
|
||||
@ -125,7 +155,7 @@ export const renderGenericTextFieldElement = (
|
||||
const rectHeight = fieldRect.height() * groupScaleY;
|
||||
|
||||
// Update text dimensions
|
||||
fieldText.width(rectWidth);
|
||||
fieldText.width(rectWidth - DEFAULT_TEXT_X_PADDING * 2);
|
||||
fieldText.height(rectHeight);
|
||||
|
||||
// Force Konva to recalculate text layout
|
||||
@ -143,7 +173,7 @@ export const renderGenericTextFieldElement = (
|
||||
const rectHeight = fieldRect.height();
|
||||
|
||||
// Update text dimensions
|
||||
fieldText.width(rectWidth); // Account for padding
|
||||
fieldText.width(rectWidth - DEFAULT_TEXT_X_PADDING * 2);
|
||||
fieldText.height(rectHeight);
|
||||
|
||||
// Force Konva to recalculate text layout
|
||||
@ -158,7 +188,9 @@ export const renderGenericTextFieldElement = (
|
||||
fieldRect.opacity(0);
|
||||
}
|
||||
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
if (color !== 'readOnly' && mode !== 'export') {
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
}
|
||||
|
||||
return {
|
||||
fieldGroup,
|
||||
|
||||
@ -25,7 +25,7 @@ export const renderRadioFieldElement = (
|
||||
field: FieldToRender,
|
||||
options: RenderFieldElementOptions,
|
||||
) => {
|
||||
const { pageWidth, pageHeight, pageLayer, mode } = options;
|
||||
const { pageWidth, pageHeight, pageLayer, mode, color } = options;
|
||||
|
||||
const radioMeta: TRadioFieldMeta | null = (field.fieldMeta as TRadioFieldMeta) || null;
|
||||
const radioValues = radioMeta?.values || [];
|
||||
@ -195,7 +195,9 @@ export const renderRadioFieldElement = (
|
||||
fieldGroup.add(text);
|
||||
});
|
||||
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
if (color !== 'readOnly' && mode !== 'export') {
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
}
|
||||
|
||||
return {
|
||||
fieldGroup,
|
||||
|
||||
@ -142,7 +142,7 @@ export const renderSignatureFieldElement = (
|
||||
field: FieldToRender,
|
||||
options: RenderFieldElementOptions,
|
||||
) => {
|
||||
const { mode = 'edit', pageLayer } = options;
|
||||
const { mode = 'edit', pageLayer, color } = options;
|
||||
|
||||
const isFirstRender = !pageLayer.findOne(`#${field.renderId}`);
|
||||
|
||||
@ -211,7 +211,9 @@ export const renderSignatureFieldElement = (
|
||||
fieldRect.opacity(0);
|
||||
}
|
||||
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
if (color !== 'readOnly' && mode !== 'export') {
|
||||
createFieldHoverInteraction({ fieldGroup, fieldRect, options });
|
||||
}
|
||||
|
||||
return {
|
||||
fieldGroup,
|
||||
|
||||
@ -102,7 +102,7 @@ export const extractFieldInsertionValues = ({
|
||||
}
|
||||
|
||||
const numberFieldParsedMeta = ZNumberFieldMeta.parse(field.fieldMeta);
|
||||
const errors = validateNumberField(fieldValue.value.toString(), numberFieldParsedMeta, true);
|
||||
const errors = validateNumberField(fieldValue.value, numberFieldParsedMeta, true);
|
||||
|
||||
if (errors.length > 0) {
|
||||
throw new AppError(AppErrorCode.INVALID_BODY, {
|
||||
@ -111,7 +111,7 @@ export const extractFieldInsertionValues = ({
|
||||
}
|
||||
|
||||
return {
|
||||
customText: fieldValue.value.toString(),
|
||||
customText: fieldValue.value,
|
||||
inserted: true,
|
||||
};
|
||||
})
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
import type { Envelope, Recipient } from '@prisma/client';
|
||||
import { DocumentStatus, EnvelopeType, SendStatus, SigningStatus } from '@prisma/client';
|
||||
import {
|
||||
DocumentStatus,
|
||||
EnvelopeType,
|
||||
RecipientRole,
|
||||
SendStatus,
|
||||
SigningStatus,
|
||||
} from '@prisma/client';
|
||||
import { match } from 'ts-pattern';
|
||||
import { z } from 'zod';
|
||||
|
||||
@ -156,8 +162,9 @@ export const canEnvelopeItemsBeModified = (
|
||||
if (
|
||||
recipients.some(
|
||||
(recipient) =>
|
||||
recipient.signingStatus === SigningStatus.SIGNED ||
|
||||
recipient.sendStatus === SendStatus.SENT,
|
||||
recipient.role !== RecipientRole.CC &&
|
||||
(recipient.signingStatus === SigningStatus.SIGNED ||
|
||||
recipient.sendStatus === SendStatus.SENT),
|
||||
)
|
||||
) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user