)}
@@ -259,7 +262,7 @@ export const DocumentSigningSignatureField = ({
{signature?.typedSignature}
@@ -272,12 +275,13 @@ export const DocumentSigningSignatureField = ({
Sign as {recipient.name}{' '}
- ({recipient.email})
+ ({recipient.email})
setLocalSignature(value)}
typedSignatureEnabled={typedSignatureEnabled}
diff --git a/apps/remix/app/components/general/document/document-upload-button-legacy.tsx b/apps/remix/app/components/general/document/document-upload-button-legacy.tsx
index f4f13aaf0..9c031e821 100644
--- a/apps/remix/app/components/general/document/document-upload-button-legacy.tsx
+++ b/apps/remix/app/components/general/document/document-upload-button-legacy.tsx
@@ -14,9 +14,10 @@ import { useSession } from '@documenso/lib/client-only/providers/session';
import { APP_DOCUMENT_UPLOAD_SIZE_LIMIT } from '@documenso/lib/constants/app';
import { DEFAULT_DOCUMENT_TIME_ZONE, TIME_ZONES } from '@documenso/lib/constants/time-zones';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
-import { formatDocumentsPath } from '@documenso/lib/utils/teams';
+import { formatDocumentsPath, formatTemplatesPath } from '@documenso/lib/utils/teams';
import { trpc } from '@documenso/trpc/react';
import type { TCreateDocumentPayloadSchema } from '@documenso/trpc/server/document-router/create-document.types';
+import type { TCreateTemplatePayloadSchema } from '@documenso/trpc/server/template-router/schema';
import { cn } from '@documenso/ui/lib/utils';
import { DocumentUploadButton as DocumentUploadButtonPrimitive } from '@documenso/ui/primitives/document-upload-button';
import {
@@ -31,9 +32,13 @@ import { useCurrentTeam } from '~/providers/team';
export type DocumentUploadButtonLegacyProps = {
className?: string;
+ type: EnvelopeType;
};
-export const DocumentUploadButtonLegacy = ({ className }: DocumentUploadButtonLegacyProps) => {
+export const DocumentUploadButtonLegacy = ({
+ className,
+ type,
+}: DocumentUploadButtonLegacyProps) => {
const { _ } = useLingui();
const { toast } = useToast();
const { user } = useSession();
@@ -54,8 +59,18 @@ export const DocumentUploadButtonLegacy = ({ className }: DocumentUploadButtonLe
const [isLoading, setIsLoading] = useState(false);
const { mutateAsync: createDocument } = trpc.document.create.useMutation();
+ const { mutateAsync: createTemplate } = trpc.template.createTemplate.useMutation();
const disabledMessage = useMemo(() => {
+ if (!user.emailVerified) {
+ return msg`Verify your email to upload documents.`;
+ }
+
+ // No errors for templates.
+ if (type === EnvelopeType.TEMPLATE) {
+ return;
+ }
+
if (organisation.subscription && remaining.documents === 0) {
return msg`Document upload disabled due to unpaid invoices`;
}
@@ -64,11 +79,8 @@ export const DocumentUploadButtonLegacy = ({ className }: DocumentUploadButtonLe
return msg`You have reached your document limit.`;
}
- if (!user.emailVerified) {
- return msg`Verify your email to upload documents.`;
- }
// eslint-disable-next-line react-hooks/exhaustive-deps
- }, [remaining.documents, user.emailVerified, team]);
+ }, [remaining.documents, user.emailVerified, team, type]);
const onFileDrop = async (file: File) => {
try {
@@ -80,44 +92,62 @@ export const DocumentUploadButtonLegacy = ({ className }: DocumentUploadButtonLe
meta: {
timezone: userTimezone,
},
- } satisfies TCreateDocumentPayloadSchema;
+ } satisfies TCreateDocumentPayloadSchema | TCreateTemplatePayloadSchema;
const formData = new FormData();
formData.append('payload', JSON.stringify(payload));
formData.append('file', file);
- const { envelopeId: id } = await createDocument(formData);
+ // Handle legacy document creation.
+ if (type === EnvelopeType.DOCUMENT) {
+ const { envelopeId: id } = await createDocument(formData);
- void refreshLimits();
+ void refreshLimits();
- await navigate(`${formatDocumentsPath(team.url)}/${id}/edit`);
+ await navigate(`${formatDocumentsPath(team.url)}/${id}/edit`);
- toast({
- title: _(msg`Document uploaded`),
- description: _(msg`Your document has been uploaded successfully.`),
- duration: 5000,
- });
+ toast({
+ title: _(msg`Document uploaded`),
+ description: _(msg`Your document has been uploaded successfully.`),
+ duration: 5000,
+ });
- analytics.capture('App: Document Uploaded', {
- userId: user.id,
- documentId: id,
- timestamp: new Date().toISOString(),
- });
+ analytics.capture('App: Document Uploaded', {
+ userId: user.id,
+ documentId: id,
+ timestamp: new Date().toISOString(),
+ });
+ }
+
+ // Handle legacy template creation.
+ if (type === EnvelopeType.TEMPLATE) {
+ const { envelopeId: id } = await createTemplate(formData);
+
+ await navigate(`${formatTemplatesPath(team.url)}/${id}/edit`);
+
+ toast({
+ title: _(msg`Template document uploaded`),
+ description: _(
+ msg`Your document has been uploaded successfully. You will be redirected to the template page.`,
+ ),
+ duration: 5000,
+ });
+ }
} catch (err) {
const error = AppError.parseError(err);
console.error(err);
const errorMessage = match(error.code)
- .with('INVALID_DOCUMENT_FILE', () => msg`You cannot upload encrypted PDFs`)
+ .with('INVALID_DOCUMENT_FILE', () => msg`You cannot upload encrypted PDFs.`)
.with(
AppErrorCode.LIMIT_EXCEEDED,
() => msg`You have reached your document limit for this month. Please upgrade your plan.`,
)
.with(
'ENVELOPE_ITEM_LIMIT_EXCEEDED',
- () => msg`You have reached the limit of the number of files per envelope`,
+ () => msg`You have reached the limit of the number of files per envelope.`,
)
.otherwise(() => msg`An error occurred while uploading your document.`);
@@ -149,17 +179,18 @@ export const DocumentUploadButtonLegacy = ({ className }: DocumentUploadButtonLe
onFileDrop(files[0])}
onDropRejected={onFileDropRejected}
- type={EnvelopeType.DOCUMENT}
+ type={type}
internalVersion="1"
/>
{team?.id === undefined &&
+ type === EnvelopeType.DOCUMENT &&
remaining.documents > 0 &&
Number.isFinite(remaining.documents) && (
diff --git a/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx b/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
index 49166b44a..475dc5b62 100644
--- a/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+++ b/apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
@@ -339,7 +339,7 @@ export const EnvelopeEditorSettingsDialog = ({
{/* Sidebar. */}
-
+
Document Settings
@@ -390,7 +390,7 @@ export const EnvelopeEditorSettingsDialog = ({
-
+
Controls the language for the document, including the language
to be used for email notifications, and the final certificate
@@ -441,7 +441,7 @@ export const EnvelopeEditorSettingsDialog = ({
}))}
selectedValues={field.value}
onChange={field.onChange}
- className="bg-background w-full"
+ className="w-full bg-background"
emptySelectionPlaceholder="Select signature types"
/>
@@ -518,7 +518,7 @@ export const EnvelopeEditorSettingsDialog = ({
-
+
Add an external ID to the document. This can be used to identify
the document in external systems.
@@ -548,7 +548,7 @@ export const EnvelopeEditorSettingsDialog = ({
-
+
Add a URL to redirect the user to once the document is signed
@@ -576,7 +576,7 @@ export const EnvelopeEditorSettingsDialog = ({
-
+
Document Distribution Method
@@ -687,8 +687,10 @@ export const EnvelopeEditorSettingsDialog = ({
render={({ field }) => (
- Reply To Email {' '}
- (Optional)
+
+ Reply To Email{' '}
+ (Optional)
+
@@ -726,20 +728,21 @@ export const EnvelopeEditorSettingsDialog = ({
render={({ field }) => (
- Message {' '}
- (Optional)
+
+ Message (Optional)
+
-
+
-
+
diff --git a/apps/remix/app/components/general/envelope-editor/envelope-editor.tsx b/apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
index c70273282..af5eecdd6 100644
--- a/apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
+++ b/apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
@@ -175,7 +175,7 @@ export default function EnvelopeEditor() {
+
(
@@ -69,15 +69,15 @@ export default function EnvelopeSignerForm() {
{r.name}
{r.id === recipient.id && (
-
+
(You)
)}
- {r.email}
+ {r.email}
-
+
field.recipientId === r.id).length}
one="# field"
@@ -103,7 +103,7 @@ export default function EnvelopeSignerForm() {
!isNameLocked && setFullName(e.target.value.trimStart())}
@@ -119,6 +119,7 @@ export default function EnvelopeSignerForm() {
setSignature(v ?? '')}
typedSignatureEnabled={envelope.documentMeta.typedSignatureEnabled}
diff --git a/apps/remix/app/components/general/envelope-signing/envelope-signer-page-renderer.tsx b/apps/remix/app/components/general/envelope-signing/envelope-signer-page-renderer.tsx
index f8a08849d..b47e22cea 100644
--- a/apps/remix/app/components/general/envelope-signing/envelope-signer-page-renderer.tsx
+++ b/apps/remix/app/components/general/envelope-signing/envelope-signer-page-renderer.tsx
@@ -374,6 +374,7 @@ export default function EnvelopeSignerPageRenderer() {
.with({ type: FieldType.SIGNATURE }, (field) => {
handleSignatureFieldClick({
field,
+ fullName,
signature,
typedSignatureEnabled: envelope.documentMeta.typedSignatureEnabled,
uploadSignatureEnabled: envelope.documentMeta.uploadSignatureEnabled,
diff --git a/apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx b/apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
index 28ab8e7e5..80e246312 100644
--- a/apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
+++ b/apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
@@ -123,14 +123,14 @@ export const EnvelopeDropZoneWrapper = ({
const error = AppError.parseError(err);
const errorMessage = match(error.code)
- .with('INVALID_DOCUMENT_FILE', () => t`You cannot upload encrypted PDFs`)
+ .with('INVALID_DOCUMENT_FILE', () => t`You cannot upload encrypted PDFs.`)
.with(
AppErrorCode.LIMIT_EXCEEDED,
() => t`You have reached your document limit for this month. Please upgrade your plan.`,
)
.with(
'ENVELOPE_ITEM_LIMIT_EXCEEDED',
- () => t`You have reached the limit of the number of files per envelope`,
+ () => t`You have reached the limit of the number of files per envelope.`,
)
.otherwise(() => t`An error occurred during upload.`);
diff --git a/apps/remix/app/components/general/envelope/envelope-upload-button.tsx b/apps/remix/app/components/general/envelope/envelope-upload-button.tsx
index 6820abca1..41b0909c3 100644
--- a/apps/remix/app/components/general/envelope/envelope-upload-button.tsx
+++ b/apps/remix/app/components/general/envelope/envelope-upload-button.tsx
@@ -126,7 +126,7 @@ export const EnvelopeUploadButton = ({ className, type, folderId }: EnvelopeUplo
console.error(err);
const errorMessage = match(error.code)
- .with('INVALID_DOCUMENT_FILE', () => t`You cannot upload encrypted PDFs`)
+ .with('INVALID_DOCUMENT_FILE', () => t`You cannot upload encrypted PDFs.`)
.with(
'UNSUPPORTED_FILE_TYPE',
() => t`This file type is not supported. Please upload a PDF, DOCX, JPEG, or PNG file.`,
@@ -146,7 +146,7 @@ export const EnvelopeUploadButton = ({ className, type, folderId }: EnvelopeUplo
)
.with(
'ENVELOPE_ITEM_LIMIT_EXCEEDED',
- () => t`You have reached the limit of the number of files per envelope`,
+ () => t`You have reached the limit of the number of files per envelope.`,
)
.otherwise(() => t`An error occurred while uploading your document.`);
diff --git a/apps/remix/app/components/general/folder/folder-grid.tsx b/apps/remix/app/components/general/folder/folder-grid.tsx
index e8ef9dc3d..5d4c8aa12 100644
--- a/apps/remix/app/components/general/folder/folder-grid.tsx
+++ b/apps/remix/app/components/general/folder/folder-grid.tsx
@@ -15,7 +15,6 @@ import { FolderCreateDialog } from '~/components/dialogs/folder-create-dialog';
import { FolderDeleteDialog } from '~/components/dialogs/folder-delete-dialog';
import { FolderMoveDialog } from '~/components/dialogs/folder-move-dialog';
import { FolderUpdateDialog } from '~/components/dialogs/folder-update-dialog';
-import { TemplateCreateDialog } from '~/components/dialogs/template-create-dialog';
import { DocumentUploadButtonLegacy } from '~/components/general/document/document-upload-button-legacy';
import { FolderCard, FolderCardEmpty } from '~/components/general/folder/folder-card';
import { useCurrentTeam } from '~/providers/team';
@@ -70,7 +69,7 @@ export const FolderGrid = ({ type, parentId }: FolderGridProps) => {
@@ -100,10 +99,9 @@ export const FolderGrid = ({ type, parentId }: FolderGridProps) => {
- {type === FolderType.DOCUMENT ? (
-
// If you delete this, delete the component as well.
- ) : (
-
// If you delete this, delete the component as well.
+ {/* If you delete this, delete the component as well. */}
+ {organisation.organisationClaim.flags.allowLegacyEnvelopes && (
+
)}
@@ -113,7 +111,7 @@ export const FolderGrid = ({ type, parentId }: FolderGridProps) => {
{isPending ? (
{Array.from({ length: 4 }).map((_, index) => (
-
+
@@ -194,7 +192,7 @@ export const FolderGrid = ({ type, parentId }: FolderGridProps) => {
{foldersData.folders.length > 12 && (
View all folders
diff --git a/apps/remix/app/components/tables/admin-dashboard-users-table.tsx b/apps/remix/app/components/tables/admin-dashboard-users-table.tsx
index b54b3484e..0a93ec45f 100644
--- a/apps/remix/app/components/tables/admin-dashboard-users-table.tsx
+++ b/apps/remix/app/components/tables/admin-dashboard-users-table.tsx
@@ -2,6 +2,7 @@ import { useEffect, useMemo, useState, useTransition } from 'react';
import { msg } from '@lingui/core/macro';
import { useLingui } from '@lingui/react';
+import { Trans } from '@lingui/react/macro';
import type { Role, Subscription } from '@prisma/client';
import { Edit, Loader } from 'lucide-react';
import { Link } from 'react-router';
@@ -82,7 +83,7 @@ export const AdminDashboardUsersTable = ({
- Edit
+ Edit
);
diff --git a/apps/remix/app/components/tables/document-logs-table.tsx b/apps/remix/app/components/tables/document-logs-table.tsx
index 38f45cbb9..fb1402091 100644
--- a/apps/remix/app/components/tables/document-logs-table.tsx
+++ b/apps/remix/app/components/tables/document-logs-table.tsx
@@ -19,6 +19,7 @@ import { TableCell } from '@documenso/ui/primitives/table';
export type DocumentLogsTableProps = {
documentId: number;
+ userId?: number;
};
const dateFormat: DateTimeFormatOptions = {
@@ -26,7 +27,7 @@ const dateFormat: DateTimeFormatOptions = {
hourCycle: 'h12',
};
-export const DocumentLogsTable = ({ documentId }: DocumentLogsTableProps) => {
+export const DocumentLogsTable = ({ documentId, userId }: DocumentLogsTableProps) => {
const { _, i18n } = useLingui();
const [searchParams] = useSearchParams();
@@ -93,7 +94,9 @@ export const DocumentLogsTable = ({ documentId }: DocumentLogsTableProps) => {
{
header: _(msg`Action`),
accessorKey: 'type',
- cell: ({ row }) =>
{formatDocumentAuditLogAction(_, row.original).description} ,
+ cell: ({ row }) => (
+
{formatDocumentAuditLogAction(_, row.original, userId).description}
+ ),
},
{
header: _(msg`IP Address`),
diff --git a/apps/remix/app/components/tables/organisation-groups-table.tsx b/apps/remix/app/components/tables/organisation-groups-table.tsx
index b7a8e2582..5656c7580 100644
--- a/apps/remix/app/components/tables/organisation-groups-table.tsx
+++ b/apps/remix/app/components/tables/organisation-groups-table.tsx
@@ -82,7 +82,9 @@ export const OrganisationGroupsDataTable = () => {
cell: ({ row }) => (
- Manage
+
+ Manage
+
-
-
+
+
@@ -53,7 +53,7 @@ export default function OrganisationSettingsTeamsPage() {
organisation.currentOrganisationRole,
) ? (
<>
-
+
Teams help you organise your work and collaborate with others. Create your first
team to get started.
@@ -73,21 +73,21 @@ export default function OrganisationSettingsTeamsPage() {
What you can do with teams:
-
+
-
+
1
Organize your documents and templates
-
+
2
Invite team members to collaborate
-
+
3
Manage permissions and access controls
@@ -96,7 +96,7 @@ export default function OrganisationSettingsTeamsPage() {
>
) : (
-
+
You currently have no access to any teams within this organisation. Please contact
your organisation to request access.
@@ -114,20 +114,22 @@ export default function OrganisationSettingsTeamsPage() {
{organisation.name} Teams
-
+
Select a team to view its dashboard
- Manage Organisation
+
+ Manage Organisation
+
{organisation.teams.map((team) => (
-
+
@@ -143,7 +145,7 @@ export default function OrganisationSettingsTeamsPage() {
{team.name}
-
+
{formatTeamUrl(team.url)}
@@ -152,11 +154,11 @@ export default function OrganisationSettingsTeamsPage() {
-
+
{i18n.date(team.createdAt, { dateStyle: 'short' })}
-
+
{t(TEAM_MEMBER_ROLE_MAP[team.currentTeamRole])}
@@ -178,7 +180,9 @@ const TeamDropdownMenu = ({ team }: { team: TGetOrganisationSessionResponse[0]['
- Open menu
+
+ Open menu
+
e.stopPropagation()}>
diff --git a/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx b/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
index 4109835f3..5d71baaf9 100644
--- a/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
+++ b/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
@@ -79,7 +79,7 @@ export default function OrganisationSettingsBrandingPage() {
if (isLoadingOrganisation || !organisationWithSettings) {
return (
-
+
);
}
@@ -87,9 +87,9 @@ export default function OrganisationSettingsBrandingPage() {
const settingsHeaderText = t`Branding Preferences`;
const settingsHeaderSubtitle = isPersonalLayoutMode
- ? t`Here you can set your general branding preferences`
+ ? t`Here you can set your general branding preferences.`
: team
- ? t`Here you can set branding preferences for your team`
+ ? t`Here you can set branding preferences for your team.`
: t`Here you can set branding preferences for your organisation. Teams will inherit these settings by default.`;
return (
diff --git a/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx b/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
index 0710b49a0..684c83bd5 100644
--- a/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
+++ b/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
@@ -57,6 +57,7 @@ export default function OrganisationSettingsDocumentPage() {
includeSigningCertificate,
includeAuditLog,
signatureTypes,
+ delegateDocumentOwnership,
aiFeaturesEnabled,
} = data;
@@ -85,6 +86,7 @@ export default function OrganisationSettingsDocumentPage() {
typedSignatureEnabled: signatureTypes.includes(DocumentSignatureType.TYPE),
uploadSignatureEnabled: signatureTypes.includes(DocumentSignatureType.UPLOAD),
drawSignatureEnabled: signatureTypes.includes(DocumentSignatureType.DRAW),
+ delegateDocumentOwnership: delegateDocumentOwnership,
aiFeaturesEnabled,
},
});
@@ -112,7 +114,7 @@ export default function OrganisationSettingsDocumentPage() {
const settingsHeaderText = t`Document Preferences`;
const settingsHeaderSubtitle = isPersonalLayoutMode
- ? t`Here you can set your general document preferences`
+ ? t`Here you can set your general document preferences.`
: t`Here you can set document preferences for your organisation. Teams will inherit these settings by default.`;
return (
diff --git a/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx b/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
index 7d74e5776..ebb448c76 100644
--- a/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
+++ b/apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
@@ -65,7 +65,7 @@ export default function OrganisationSettingsGeneral() {
diff --git a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
index 7cf5cf731..f6ddbfb6d 100644
--- a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
+++ b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
@@ -75,11 +75,12 @@ export async function loader({ params, request }: Route.LoaderArgs) {
},
recipients: envelope.recipients,
documentRootPath,
+ userId: user.id,
};
}
export default function DocumentsLogsPage({ loaderData }: Route.ComponentProps) {
- const { document, recipients, documentRootPath } = loaderData;
+ const { document, recipients, documentRootPath, userId } = loaderData;
const { _, i18n } = useLingui();
@@ -171,15 +172,15 @@ export default function DocumentsLogsPage({ loaderData }: Route.ComponentProps)
{documentInformation.map((info, i) => (
-
+
{_(info.description)}
-
{info.value}
+
{info.value}
))}
-
+
Recipients
-
+
{recipients.map((recipient) => (
{formatRecipientText(recipient)}
@@ -191,7 +192,7 @@ export default function DocumentsLogsPage({ loaderData }: Route.ComponentProps)
);
diff --git a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
index 3f3b2a20f..34025b592 100644
--- a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
+++ b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
@@ -50,6 +50,7 @@ export default function TeamsSettingsPage() {
includeSigningCertificate,
includeAuditLog,
signatureTypes,
+ delegateDocumentOwnership,
aiFeaturesEnabled,
} = data;
@@ -75,6 +76,7 @@ export default function TeamsSettingsPage() {
uploadSignatureEnabled: signatureTypes.includes(DocumentSignatureType.UPLOAD),
drawSignatureEnabled: signatureTypes.includes(DocumentSignatureType.DRAW),
}),
+ delegateDocumentOwnership: delegateDocumentOwnership,
},
});
diff --git a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
index f1fed0374..244dbd2e4 100644
--- a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
+++ b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
@@ -63,7 +63,7 @@ export default function TeamEmailSettingsGeneral() {
diff --git a/apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx b/apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
index aa1fc66e5..b4e6716f9 100644
--- a/apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
+++ b/apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
@@ -10,6 +10,7 @@ import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-
import { unsafeGetEntireEnvelope } from '@documenso/lib/server-only/admin/get-entire-document';
import { decryptSecondaryData } from '@documenso/lib/server-only/crypto/decrypt';
import { findDocumentAuditLogs } from '@documenso/lib/server-only/document/find-document-audit-logs';
+import { getOrganisationClaimByTeamId } from '@documenso/lib/server-only/organisation/get-organisation-claims';
import { mapSecondaryIdToDocumentId } from '@documenso/lib/utils/envelope';
import { getTranslations } from '@documenso/lib/utils/i18n';
import { Card, CardContent } from '@documenso/ui/primitives/card';
@@ -53,6 +54,8 @@ export async function loader({ request }: Route.LoaderArgs) {
throw redirect('/');
}
+ const organisationClaim = await getOrganisationClaimByTeamId({ teamId: envelope.teamId });
+
const documentLanguage = ZSupportedLanguageCodeSchema.parse(envelope.documentMeta?.language);
const { data: auditLogs } = await findDocumentAuditLogs({
@@ -81,6 +84,7 @@ export async function loader({ request }: Route.LoaderArgs) {
deletedAt: envelope.deletedAt,
documentMeta: envelope.documentMeta,
},
+ hidePoweredBy: organisationClaim.flags.hidePoweredBy,
documentLanguage,
messages,
};
@@ -95,7 +99,7 @@ export async function loader({ request }: Route.LoaderArgs) {
* Update: Maybe tags work now after RR7 migration.
*/
export default function AuditLog({ loaderData }: Route.ComponentProps) {
- const { auditLogs, document, documentLanguage, messages } = loaderData;
+ const { auditLogs, document, documentLanguage, hidePoweredBy, messages } = loaderData;
const { i18n, _ } = useLingui();
@@ -188,11 +192,13 @@ export default function AuditLog({ loaderData }: Route.ComponentProps) {
-
-
-
+ {!hidePoweredBy && (
+
-
+ )}
);
}
diff --git a/apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx b/apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx
index 34af24655..126931a49 100644
--- a/apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx
+++ b/apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx
@@ -185,6 +185,9 @@ export default function SigningCertificate({ loaderData }: Route.ComponentProps)
(log) =>
log.type === DOCUMENT_AUDIT_LOG_TYPE.EMAIL_SENT && log.data.recipientId === recipientId,
),
+ [DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT]: auditLogs[
+ DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT
+ ].filter((log) => log.type === DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT),
[DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED]: auditLogs[
DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED
].filter(
@@ -245,11 +248,11 @@ export default function SigningCertificate({ loaderData }: Route.ComponentProps)
{recipient.name}
{recipient.email}
-
+
{_(RECIPIENT_ROLES_DESCRIPTION[recipient.role].roleName)}
-
+
{_(msg`Authentication Level`)}: {' '}
{getAuthenticationLevel(recipient.id)}
@@ -273,13 +276,13 @@ export default function SigningCertificate({ loaderData }: Route.ComponentProps)
)}
{signature.signature?.typedSignature && (
-
+
{signature.signature?.typedSignature}
)}
-
+
{_(msg`Signature ID`)}: {' '}
{signature.secondaryId}
@@ -290,14 +293,14 @@ export default function SigningCertificate({ loaderData }: Route.ComponentProps)
N/A
)}
-
+
{_(msg`IP Address`)}: {' '}
{logs.DOCUMENT_RECIPIENT_COMPLETED[0]?.ipAddress ?? _(msg`Unknown`)}
-
+
{_(msg`Device`)}: {' '}
{getDevice(logs.DOCUMENT_RECIPIENT_COMPLETED[0]?.userAgent)}
@@ -307,18 +310,22 @@ export default function SigningCertificate({ loaderData }: Route.ComponentProps)
-
+
{_(msg`Sent`)}: {' '}
{logs.EMAIL_SENT[0]
? DateTime.fromJSDate(logs.EMAIL_SENT[0].createdAt)
.setLocale(APP_I18N_OPTIONS.defaultLocale)
.toFormat('yyyy-MM-dd hh:mm:ss a (ZZZZ)')
- : _(msg`Unknown`)}
+ : logs.DOCUMENT_SENT[0]
+ ? DateTime.fromJSDate(logs.DOCUMENT_SENT[0].createdAt)
+ .setLocale(APP_I18N_OPTIONS.defaultLocale)
+ .toFormat('yyyy-MM-dd hh:mm:ss a (ZZZZ)')
+ : _(msg`Unknown`)}
-
+
{_(msg`Viewed`)}: {' '}
{logs.DOCUMENT_OPENED[0]
@@ -330,7 +337,7 @@ export default function SigningCertificate({ loaderData }: Route.ComponentProps)
{logs.DOCUMENT_RECIPIENT_REJECTED[0] ? (
-
+
{_(msg`Rejected`)}: {' '}
{logs.DOCUMENT_RECIPIENT_REJECTED[0]
@@ -341,7 +348,7 @@ export default function SigningCertificate({ loaderData }: Route.ComponentProps)
) : (
-
+
{_(msg`Signed`)}: {' '}
{logs.DOCUMENT_RECIPIENT_COMPLETED[0]
@@ -355,7 +362,7 @@ export default function SigningCertificate({ loaderData }: Route.ComponentProps)
)}
-
+
{_(msg`Reason`)}: {' '}
{recipient.signingStatus === SigningStatus.REJECTED
diff --git a/apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx b/apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
index b4998bd3b..ede85cafd 100644
--- a/apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
+++ b/apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
@@ -355,24 +355,25 @@ const SigningPageV1 = ({ data }: { data: Awaited
-
+
This document has been cancelled by the owner.
{user ? (
-
+
Go Back Home
) : (
-
+
Want to send slick signing links like this one?{' '}
- Check out Documenso.
+ Check out Documenso
+ .
)}
@@ -454,24 +455,25 @@ const SigningPageV2 = ({ data }: { data: Awaited
-
+
This document has been cancelled by the owner.
{user ? (
-
+
Go Back Home
) : (
-
+
Want to send slick signing links like this one?{' '}
- Check out Documenso.
+ Check out Documenso
+ .
)}
diff --git a/apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx b/apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
index 2dcf80dbc..861ae0d92 100644
--- a/apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+++ b/apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
@@ -91,31 +91,33 @@ export default function RejectedSigningPage({ loaderData }: Route.ComponentProps
-
+
Document Rejected
-
+
You have rejected this document
-
+
The document owner has been notified of your decision. They may contact you with further
instructions if necessary.
-
+
No further action is required from you at this time.
{user && (
- Return Home
+
+ Return Home
+
)}
diff --git a/apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx b/apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
index bf7b97bf7..9917933cb 100644
--- a/apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+++ b/apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
@@ -78,14 +78,14 @@ export default function WaitingForTurnToSignPage({ loaderData }: Route.Component
Waiting for Your Turn
-
+
It's currently not your turn to sign. You will receive an email with instructions once
it's your turn to sign the document.
-
+
Please check your email for updates.
@@ -98,7 +98,9 @@ export default function WaitingForTurnToSignPage({ loaderData }: Route.Component
) : (
- Return Home
+
+ Return Home
+
)}
diff --git a/apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx b/apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
index 4139c383d..f012db6bc 100644
--- a/apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
+++ b/apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -193,11 +193,11 @@ export default function OrganisationSsoConfirmationTokenPage({ loaderData }: Rou
{/* Current User Section */}
-
+
Your Account
-
+
-
+
Requesting Organisation
-
+
-
+
Important: What This Means
@@ -253,7 +253,7 @@ export default function OrganisationSsoConfirmationTokenPage({ loaderData }: Rou
-
+
Full account access:
{' '}
View all your profile information, settings, and activity
@@ -264,7 +264,7 @@ export default function OrganisationSsoConfirmationTokenPage({ loaderData }: Rou
-
+
Account management:
{' '}
Modify your account settings, permissions, and preferences
@@ -275,7 +275,7 @@ export default function OrganisationSsoConfirmationTokenPage({ loaderData }: Rou
- Data access: {' '}
+ Data access: {' '}
Access all data associated with your account
@@ -304,7 +304,7 @@ export default function OrganisationSsoConfirmationTokenPage({ loaderData }: Rou
/>
I agree to link my account with this organization
diff --git a/apps/remix/app/utils/field-signing/signature-field.ts b/apps/remix/app/utils/field-signing/signature-field.ts
index be3affb95..5cdb16685 100644
--- a/apps/remix/app/utils/field-signing/signature-field.ts
+++ b/apps/remix/app/utils/field-signing/signature-field.ts
@@ -8,6 +8,7 @@ import { SignFieldSignatureDialog } from '~/components/dialogs/sign-field-signat
type HandleSignatureFieldClickOptions = {
field: TFieldSignature;
+ fullName?: string;
signature: string | null;
typedSignatureEnabled?: boolean;
uploadSignatureEnabled?: boolean;
@@ -17,8 +18,14 @@ type HandleSignatureFieldClickOptions = {
export const handleSignatureFieldClick = async (
options: HandleSignatureFieldClickOptions,
): Promise | null> => {
- const { field, signature, typedSignatureEnabled, uploadSignatureEnabled, drawSignatureEnabled } =
- options;
+ const {
+ field,
+ fullName,
+ signature,
+ typedSignatureEnabled,
+ uploadSignatureEnabled,
+ drawSignatureEnabled,
+ } = options;
if (field.type !== FieldType.SIGNATURE) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
@@ -37,6 +44,7 @@ export const handleSignatureFieldClick = async (
if (!signatureToInsert) {
signatureToInsert = await SignFieldSignatureDialog.call({
+ fullName,
typedSignatureEnabled,
uploadSignatureEnabled,
drawSignatureEnabled,
diff --git a/apps/remix/package.json b/apps/remix/package.json
index a7d7eda0a..c0527c75c 100644
--- a/apps/remix/package.json
+++ b/apps/remix/package.json
@@ -107,5 +107,5 @@
"vite-plugin-babel-macros": "^1.0.6",
"vite-tsconfig-paths": "^5.1.4"
},
- "version": "2.2.6"
+ "version": "2.3.2"
}
diff --git a/docker/Dockerfile.chromium b/docker/Dockerfile.chromium
new file mode 100644
index 000000000..5c1f4f30b
--- /dev/null
+++ b/docker/Dockerfile.chromium
@@ -0,0 +1,5 @@
+ARG TAG=latest
+FROM documenso/documenso:${TAG}
+
+# Install @playwright/browser-chromium which bundles Playwright + Chromium
+RUN npm install @playwright/browser-chromium
diff --git a/package-lock.json b/package-lock.json
index b753aa237..c15b62044 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@documenso/root",
- "version": "2.2.6",
+ "version": "2.3.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@documenso/root",
- "version": "2.2.6",
+ "version": "2.3.2",
"hasInstallScript": true,
"workspaces": [
"apps/*",
@@ -32,9 +32,9 @@
"@commitlint/config-conventional": "^20.0.0",
"@lingui/cli": "^5.6.0",
"@prisma/client": "^6.19.0",
- "@trpc/client": "11.7.1",
- "@trpc/react-query": "11.7.1",
- "@trpc/server": "11.7.1",
+ "@trpc/client": "11.8.1",
+ "@trpc/react-query": "11.8.1",
+ "@trpc/server": "11.8.1",
"@ts-rest/core": "^3.52.1",
"@ts-rest/open-api": "^3.52.1",
"@ts-rest/serverless": "^3.52.1",
@@ -78,7 +78,7 @@
"@documenso/tailwind-config": "*",
"@documenso/trpc": "*",
"@documenso/ui": "*",
- "next": "^15.5.7",
+ "next": "15.5.9",
"next-plausible": "^3.12.5",
"nextra": "^3",
"nextra-theme-docs": "^3",
@@ -99,7 +99,7 @@
"dependencies": {
"@documenso/prisma": "*",
"luxon": "^3.7.2",
- "next": "^15.5.7"
+ "next": "15.5.9"
},
"devDependencies": {
"@types/node": "^20",
@@ -109,7 +109,7 @@
},
"apps/remix": {
"name": "@documenso/remix",
- "version": "2.2.6",
+ "version": "2.3.2",
"dependencies": {
"@cantoo/pdf-lib": "^2.5.3",
"@documenso/api": "*",
@@ -3276,12 +3276,60 @@
"node": ">=6"
}
},
+ "node_modules/@hapi/address": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz",
+ "integrity": "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^11.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/@hapi/bourne": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz",
"integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==",
"license": "BSD-3-Clause"
},
+ "node_modules/@hapi/formula": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz",
+ "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/hoek": {
+ "version": "11.0.7",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz",
+ "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/pinpoint": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz",
+ "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/tlds": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.4.tgz",
+ "integrity": "sha512-Fq+20dxsxLaUn5jSSWrdtSRcIUba2JquuorF9UW1wIJS5cSUwxIsO2GIhaWynPRflvxSzFN+gxKte2HEW1OuoA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@hapi/topo": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz",
+ "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^11.0.2"
+ }
+ },
"node_modules/@headlessui/react": {
"version": "2.2.9",
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.9.tgz",
@@ -5036,9 +5084,9 @@
}
},
"node_modules/@next/env": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.7.tgz",
- "integrity": "sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==",
+ "version": "15.5.9",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.9.tgz",
+ "integrity": "sha512-4GlTZ+EJM7WaW2HEZcyU317tIQDjkQIyENDLxYJfSWlfqguN+dHkZgyQTV/7ykvobU7yEH5gKvreNrH4B6QgIg==",
"license": "MIT"
},
"node_modules/@next/eslint-plugin-next": {
@@ -16425,39 +16473,39 @@
}
},
"node_modules/@trpc/client": {
- "version": "11.7.1",
- "resolved": "https://registry.npmjs.org/@trpc/client/-/client-11.7.1.tgz",
- "integrity": "sha512-uOnAjElKI892/U6aQMcBHYs3x7mme3Cvv1F87ytBL56rBvs7+DyK7r43zgaXKf13+GtPEI6ex5xjVUfyDW8XcQ==",
+ "version": "11.8.1",
+ "resolved": "https://registry.npmjs.org/@trpc/client/-/client-11.8.1.tgz",
+ "integrity": "sha512-L/SJFGanr9xGABmuDoeXR4xAdHJmsXsiF9OuH+apecJ+8sUITzVT1EPeqp0ebqA6lBhEl5pPfg3rngVhi/h60Q==",
"funding": [
"https://trpc.io/sponsor"
],
"license": "MIT",
"peerDependencies": {
- "@trpc/server": "11.7.1",
+ "@trpc/server": "11.8.1",
"typescript": ">=5.7.2"
}
},
"node_modules/@trpc/react-query": {
- "version": "11.7.1",
- "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-11.7.1.tgz",
- "integrity": "sha512-dEHDjIqSTzO8nLlCbtiFBMBwhbSkK1QP7aYVo3nP3sYBna0b+iCtrPXdxVPCSopr9/aIqDTEh+dMRZa7yBgjfQ==",
+ "version": "11.8.1",
+ "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-11.8.1.tgz",
+ "integrity": "sha512-0Vu55ld/oINb4U6nIPPi7eZMhxUop6K+4QUK90RVsfSD5r+957sM80M4c8bjh/JBZUxMFv9JOhxxlWcrgHxHow==",
"funding": [
"https://trpc.io/sponsor"
],
"license": "MIT",
"peerDependencies": {
"@tanstack/react-query": "^5.80.3",
- "@trpc/client": "11.7.1",
- "@trpc/server": "11.7.1",
+ "@trpc/client": "11.8.1",
+ "@trpc/server": "11.8.1",
"react": ">=18.2.0",
"react-dom": ">=18.2.0",
"typescript": ">=5.7.2"
}
},
"node_modules/@trpc/server": {
- "version": "11.7.1",
- "resolved": "https://registry.npmjs.org/@trpc/server/-/server-11.7.1.tgz",
- "integrity": "sha512-N3U8LNLIP4g9C7LJ/sLkjuPHwqlvE3bnspzC4DEFVdvx2+usbn70P80E3wj5cjOTLhmhRiwJCSXhlB+MHfGeCw==",
+ "version": "11.8.1",
+ "resolved": "https://registry.npmjs.org/@trpc/server/-/server-11.8.1.tgz",
+ "integrity": "sha512-P4rzZRpEL7zDFgjxK65IdyH0e41FMFfTkQkuq0BA5tKcr7E6v9/v38DEklCpoDN6sPiB1Sigy/PUEzHENhswDA==",
"funding": [
"https://trpc.io/sponsor"
],
@@ -16598,6 +16646,17 @@
"@types/node": "*"
}
},
+ "node_modules/@types/chai": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz",
+ "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
+ }
+ },
"node_modules/@types/connect": {
"version": "3.4.38",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
@@ -16895,6 +16954,13 @@
"@types/ms": "*"
}
},
+ "node_modules/@types/deep-eql": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
+ "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
@@ -17707,6 +17773,145 @@
"node": ">= 20"
}
},
+ "node_modules/@vitest/expect": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz",
+ "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/chai": "^5.2.2",
+ "@vitest/spy": "3.2.4",
+ "@vitest/utils": "3.2.4",
+ "chai": "^5.2.0",
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/mocker": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz",
+ "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/spy": "3.2.4",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.17"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "msw": "^2.4.9",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/mocker/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/@vitest/pretty-format": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz",
+ "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/runner": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz",
+ "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/utils": "3.2.4",
+ "pathe": "^2.0.3",
+ "strip-literal": "^3.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/runner/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vitest/snapshot": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz",
+ "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "3.2.4",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/snapshot/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vitest/spy": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz",
+ "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tinyspy": "^4.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/utils": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz",
+ "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "3.2.4",
+ "loupe": "^3.1.4",
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
"node_modules/@vvo/tzdb": {
"version": "6.196.0",
"resolved": "https://registry.npmjs.org/@vvo/tzdb/-/tzdb-6.196.0.tgz",
@@ -18883,6 +19088,23 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/chai": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz",
+ "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "assertion-error": "^2.0.1",
+ "check-error": "^2.1.1",
+ "deep-eql": "^5.0.1",
+ "loupe": "^3.1.0",
+ "pathval": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/chalk": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
@@ -23286,6 +23508,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/expect-type": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz",
+ "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/express": {
"version": "4.21.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
@@ -26171,6 +26403,24 @@
"jiti": "lib/jiti-cli.mjs"
}
},
+ "node_modules/joi": {
+ "version": "18.0.2",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-18.0.2.tgz",
+ "integrity": "sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/address": "^5.1.1",
+ "@hapi/formula": "^3.0.2",
+ "@hapi/hoek": "^11.0.7",
+ "@hapi/pinpoint": "^2.0.1",
+ "@hapi/tlds": "^1.1.1",
+ "@hapi/topo": "^6.0.2",
+ "@standard-schema/spec": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
"node_modules/jose": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/jose/-/jose-6.1.2.tgz",
@@ -26396,12 +26646,12 @@
}
},
"node_modules/jws": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
- "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
+ "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
"license": "MIT",
"dependencies": {
- "jwa": "^2.0.0",
+ "jwa": "^2.0.1",
"safe-buffer": "^5.0.1"
}
},
@@ -27108,6 +27358,13 @@
"loose-envify": "cli.js"
}
},
+ "node_modules/loupe": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz",
+ "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -28912,12 +29169,12 @@
}
},
"node_modules/next": {
- "version": "15.5.7",
- "resolved": "https://registry.npmjs.org/next/-/next-15.5.7.tgz",
- "integrity": "sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==",
+ "version": "15.5.9",
+ "resolved": "https://registry.npmjs.org/next/-/next-15.5.9.tgz",
+ "integrity": "sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==",
"license": "MIT",
"dependencies": {
- "@next/env": "15.5.7",
+ "@next/env": "15.5.9",
"@swc/helpers": "0.5.15",
"caniuse-lite": "^1.0.30001579",
"postcss": "8.4.31",
@@ -30368,6 +30625,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/pathval": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz",
+ "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.16"
+ }
+ },
"node_modules/pause-stream": {
"version": "0.0.11",
"resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
@@ -33844,6 +34111,47 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/start-server-and-test": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.1.3.tgz",
+ "integrity": "sha512-k4EcbNjeg0odaDkAMlIeDVDByqX9PIgL4tivgP2tES6Zd8o+4pTq/HgbWCyA3VHIoZopB+wGnNPKYGGSByNriQ==",
+ "license": "MIT",
+ "dependencies": {
+ "arg": "^5.0.2",
+ "bluebird": "3.7.2",
+ "check-more-types": "2.24.0",
+ "debug": "4.4.3",
+ "execa": "5.1.1",
+ "lazy-ass": "1.6.0",
+ "ps-tree": "1.2.0",
+ "wait-on": "9.0.3"
+ },
+ "bin": {
+ "server-test": "src/bin/start.js",
+ "start-server-and-test": "src/bin/start.js",
+ "start-test": "src/bin/start.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/start-server-and-test/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
@@ -33853,6 +34161,13 @@
"node": ">= 0.8"
}
},
+ "node_modules/std-env": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
+ "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/stdin-discarder": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
@@ -34192,6 +34507,26 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/strip-literal": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz",
+ "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^9.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/strip-literal/node_modules/js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/stripe": {
"version": "12.18.0",
"resolved": "https://registry.npmjs.org/stripe/-/stripe-12.18.0.tgz",
@@ -34866,6 +35201,16 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
+ "node_modules/tinypool": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz",
+ "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ }
+ },
"node_modules/tinyrainbow": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
@@ -34876,6 +35221,16 @@
"node": ">=14.0.0"
}
},
+ "node_modules/tinyspy": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz",
+ "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/title": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/title/-/title-4.0.1.tgz",
@@ -36171,6 +36526,93 @@
}
}
},
+ "node_modules/vitest": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz",
+ "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/chai": "^5.2.2",
+ "@vitest/expect": "3.2.4",
+ "@vitest/mocker": "3.2.4",
+ "@vitest/pretty-format": "^3.2.4",
+ "@vitest/runner": "3.2.4",
+ "@vitest/snapshot": "3.2.4",
+ "@vitest/spy": "3.2.4",
+ "@vitest/utils": "3.2.4",
+ "chai": "^5.2.0",
+ "debug": "^4.4.1",
+ "expect-type": "^1.2.1",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.2",
+ "std-env": "^3.9.0",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^0.3.2",
+ "tinyglobby": "^0.2.14",
+ "tinypool": "^1.1.1",
+ "tinyrainbow": "^2.0.0",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0",
+ "vite-node": "3.2.4",
+ "why-is-node-running": "^2.3.0"
+ },
+ "bin": {
+ "vitest": "vitest.mjs"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@edge-runtime/vm": "*",
+ "@types/debug": "^4.1.12",
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "@vitest/browser": "3.2.4",
+ "@vitest/ui": "3.2.4",
+ "happy-dom": "*",
+ "jsdom": "*"
+ },
+ "peerDependenciesMeta": {
+ "@edge-runtime/vm": {
+ "optional": true
+ },
+ "@types/debug": {
+ "optional": true
+ },
+ "@types/node": {
+ "optional": true
+ },
+ "@vitest/browser": {
+ "optional": true
+ },
+ "@vitest/ui": {
+ "optional": true
+ },
+ "happy-dom": {
+ "optional": true
+ },
+ "jsdom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vitest/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vitest/node_modules/tinyexec": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
+ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/vscode-jsonrpc": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
@@ -36220,6 +36662,25 @@
"integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
"license": "MIT"
},
+ "node_modules/wait-on": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-9.0.3.tgz",
+ "integrity": "sha512-13zBnyYvFDW1rBvWiJ6Av3ymAaq8EDQuvxZnPIw3g04UqGi4TyoIJABmfJ6zrvKo9yeFQExNkOk7idQbDJcuKA==",
+ "license": "MIT",
+ "dependencies": {
+ "axios": "^1.13.2",
+ "joi": "^18.0.1",
+ "lodash": "^4.17.21",
+ "minimist": "^1.2.8",
+ "rxjs": "^7.8.2"
+ },
+ "bin": {
+ "wait-on": "bin/wait-on"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
"node_modules/warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
@@ -36806,82 +37267,6 @@
"node": ">=18"
}
},
- "packages/app-tests/node_modules/start-server-and-test": {
- "version": "2.0.12",
- "license": "MIT",
- "dependencies": {
- "arg": "^5.0.2",
- "bluebird": "3.7.2",
- "check-more-types": "2.24.0",
- "debug": "4.4.1",
- "execa": "5.1.1",
- "lazy-ass": "1.6.0",
- "ps-tree": "1.2.0",
- "wait-on": "8.0.3"
- },
- "bin": {
- "server-test": "src/bin/start.js",
- "start-server-and-test": "src/bin/start.js",
- "start-test": "src/bin/start.js"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "packages/app-tests/node_modules/start-server-and-test/node_modules/wait-on": {
- "version": "8.0.3",
- "license": "MIT",
- "dependencies": {
- "axios": "^1.8.2",
- "joi": "^17.13.3",
- "lodash": "^4.17.21",
- "minimist": "^1.2.8",
- "rxjs": "^7.8.2"
- },
- "bin": {
- "wait-on": "bin/wait-on"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "packages/app-tests/node_modules/start-server-and-test/node_modules/wait-on/node_modules/joi": {
- "version": "17.13.3",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@hapi/hoek": "^9.3.0",
- "@hapi/topo": "^5.1.0",
- "@sideway/address": "^4.1.5",
- "@sideway/formula": "^3.0.1",
- "@sideway/pinpoint": "^2.0.0"
- }
- },
- "packages/app-tests/node_modules/start-server-and-test/node_modules/wait-on/node_modules/joi/node_modules/@hapi/hoek": {
- "version": "9.3.0",
- "license": "BSD-3-Clause"
- },
- "packages/app-tests/node_modules/start-server-and-test/node_modules/wait-on/node_modules/joi/node_modules/@hapi/topo": {
- "version": "5.1.0",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "packages/app-tests/node_modules/start-server-and-test/node_modules/wait-on/node_modules/joi/node_modules/@sideway/address": {
- "version": "4.1.5",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "packages/app-tests/node_modules/start-server-and-test/node_modules/wait-on/node_modules/joi/node_modules/@sideway/formula": {
- "version": "3.0.1",
- "license": "BSD-3-Clause"
- },
- "packages/app-tests/node_modules/start-server-and-test/node_modules/wait-on/node_modules/joi/node_modules/@sideway/pinpoint": {
- "version": "2.0.0",
- "license": "BSD-3-Clause"
- },
"packages/assets": {
"name": "@documenso/assets",
"version": "0.1.0"
@@ -37331,348 +37716,6 @@
"vitest": "^3.2.4"
}
},
- "packages/signing/node_modules/estree-walker": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0"
- }
- },
- "packages/signing/node_modules/pathe": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT"
- },
- "packages/signing/node_modules/tinyexec": {
- "version": "0.3.2",
- "dev": true,
- "license": "MIT"
- },
- "packages/signing/node_modules/vite": {
- "version": "6.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.25.0",
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2",
- "postcss": "^8.5.3",
- "rollup": "^4.34.9",
- "tinyglobby": "^0.2.13"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
- "jiti": ">=1.21.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.16.0",
- "tsx": "^4.8.1",
- "yaml": "^2.4.2"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "jiti": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- },
- "tsx": {
- "optional": true
- },
- "yaml": {
- "optional": true
- }
- }
- },
- "packages/signing/node_modules/vite-node": {
- "version": "3.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cac": "^6.7.14",
- "debug": "^4.4.0",
- "es-module-lexer": "^1.7.0",
- "pathe": "^2.0.3",
- "vite": "^5.0.0 || ^6.0.0"
- },
- "bin": {
- "vite-node": "vite-node.mjs"
- },
- "engines": {
- "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "packages/signing/node_modules/vitest": {
- "version": "3.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/expect": "3.1.4",
- "@vitest/mocker": "3.1.4",
- "@vitest/pretty-format": "^3.1.4",
- "@vitest/runner": "3.1.4",
- "@vitest/snapshot": "3.1.4",
- "@vitest/spy": "3.1.4",
- "@vitest/utils": "3.1.4",
- "chai": "^5.2.0",
- "debug": "^4.4.0",
- "expect-type": "^1.2.1",
- "magic-string": "^0.30.17",
- "pathe": "^2.0.3",
- "std-env": "^3.9.0",
- "tinybench": "^2.9.0",
- "tinyexec": "^0.3.2",
- "tinyglobby": "^0.2.13",
- "tinypool": "^1.0.2",
- "tinyrainbow": "^2.0.0",
- "vite": "^5.0.0 || ^6.0.0",
- "vite-node": "3.1.4",
- "why-is-node-running": "^2.3.0"
- },
- "bin": {
- "vitest": "vitest.mjs"
- },
- "engines": {
- "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "@edge-runtime/vm": "*",
- "@types/debug": "^4.1.12",
- "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
- "@vitest/browser": "3.1.4",
- "@vitest/ui": "3.1.4",
- "happy-dom": "*",
- "jsdom": "*"
- },
- "peerDependenciesMeta": {
- "@edge-runtime/vm": {
- "optional": true
- },
- "@types/debug": {
- "optional": true
- },
- "@types/node": {
- "optional": true
- },
- "@vitest/browser": {
- "optional": true
- },
- "@vitest/ui": {
- "optional": true
- },
- "happy-dom": {
- "optional": true
- },
- "jsdom": {
- "optional": true
- }
- }
- },
- "packages/signing/node_modules/vitest/node_modules/@vitest/expect": {
- "version": "3.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/spy": "3.1.4",
- "@vitest/utils": "3.1.4",
- "chai": "^5.2.0",
- "tinyrainbow": "^2.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/@vitest/mocker": {
- "version": "3.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/spy": "3.1.4",
- "estree-walker": "^3.0.3",
- "magic-string": "^0.30.17"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "msw": "^2.4.9",
- "vite": "^5.0.0 || ^6.0.0"
- },
- "peerDependenciesMeta": {
- "msw": {
- "optional": true
- },
- "vite": {
- "optional": true
- }
- }
- },
- "packages/signing/node_modules/vitest/node_modules/@vitest/pretty-format": {
- "version": "3.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tinyrainbow": "^2.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/@vitest/runner": {
- "version": "3.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/utils": "3.1.4",
- "pathe": "^2.0.3"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/@vitest/snapshot": {
- "version": "3.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/pretty-format": "3.1.4",
- "magic-string": "^0.30.17",
- "pathe": "^2.0.3"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/@vitest/spy": {
- "version": "3.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tinyspy": "^3.0.2"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/@vitest/spy/node_modules/tinyspy": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/@vitest/utils": {
- "version": "3.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/pretty-format": "3.1.4",
- "loupe": "^3.1.3",
- "tinyrainbow": "^2.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/@vitest/utils/node_modules/loupe": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "packages/signing/node_modules/vitest/node_modules/chai": {
- "version": "5.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "assertion-error": "^2.0.1",
- "check-error": "^2.1.1",
- "deep-eql": "^5.0.1",
- "loupe": "^3.1.0",
- "pathval": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/chai/node_modules/loupe": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "packages/signing/node_modules/vitest/node_modules/chai/node_modules/pathval": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 14.16"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/expect-type": {
- "version": "1.2.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "packages/signing/node_modules/vitest/node_modules/std-env": {
- "version": "3.9.0",
- "dev": true,
- "license": "MIT"
- },
- "packages/signing/node_modules/vitest/node_modules/tinypool": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- }
- },
"packages/tailwind-config": {
"name": "@documenso/tailwind-config",
"version": "0.0.0",
@@ -37695,9 +37738,9 @@
"@documenso/lib": "*",
"@documenso/prisma": "*",
"@tanstack/react-query": "5.90.10",
- "@trpc/client": "11.7.1",
- "@trpc/react-query": "11.7.1",
- "@trpc/server": "11.7.1",
+ "@trpc/client": "11.8.1",
+ "@trpc/react-query": "11.8.1",
+ "@trpc/server": "11.8.1",
"@ts-rest/core": "^3.52.1",
"formidable": "^3.5.4",
"luxon": "^3.7.2",
diff --git a/package.json b/package.json
index ce2ea998f..697feeab1 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"apps/*",
"packages/*"
],
- "version": "2.2.6",
+ "version": "2.3.2",
"scripts": {
"postinstall": "patch-package",
"build": "turbo run build",
@@ -51,9 +51,9 @@
"@commitlint/config-conventional": "^20.0.0",
"@lingui/cli": "^5.6.0",
"@prisma/client": "^6.19.0",
- "@trpc/client": "11.7.1",
- "@trpc/react-query": "11.7.1",
- "@trpc/server": "11.7.1",
+ "@trpc/client": "11.8.1",
+ "@trpc/react-query": "11.8.1",
+ "@trpc/server": "11.8.1",
"@ts-rest/core": "^3.52.1",
"@ts-rest/open-api": "^3.52.1",
"@ts-rest/serverless": "^3.52.1",
diff --git a/packages/app-tests/e2e/api/v2/envelopes-api.spec.ts b/packages/app-tests/e2e/api/v2/envelopes-api.spec.ts
index bf7f75b40..beac50e56 100644
--- a/packages/app-tests/e2e/api/v2/envelopes-api.spec.ts
+++ b/packages/app-tests/e2e/api/v2/envelopes-api.spec.ts
@@ -1,4 +1,4 @@
-import { expect, test } from '@playwright/test';
+import { type APIRequestContext, expect, test } from '@playwright/test';
import type { Team, User } from '@prisma/client';
import fs from 'node:fs';
import path from 'node:path';
@@ -27,6 +27,7 @@ import type {
import type { TDistributeEnvelopeRequest } from '@documenso/trpc/server/envelope-router/distribute-envelope.types';
import type { TCreateEnvelopeRecipientsRequest } from '@documenso/trpc/server/envelope-router/envelope-recipients/create-envelope-recipients.types';
import type { TUpdateEnvelopeRecipientsRequest } from '@documenso/trpc/server/envelope-router/envelope-recipients/update-envelope-recipients.types';
+import type { TFindEnvelopesResponse } from '@documenso/trpc/server/envelope-router/find-envelopes.types';
import type { TGetEnvelopeResponse } from '@documenso/trpc/server/envelope-router/get-envelope.types';
import type { TUpdateEnvelopeRequest } from '@documenso/trpc/server/envelope-router/update-envelope.types';
@@ -562,6 +563,200 @@ test.describe('API V2 Envelopes', () => {
});
});
+ test.describe('Envelope find endpoint', () => {
+ const createEnvelope = async (
+ request: APIRequestContext,
+ token: string,
+ payload: TCreateEnvelopePayload,
+ ) => {
+ const formData = new FormData();
+ formData.append('payload', JSON.stringify(payload));
+
+ const pdfData = fs.readFileSync(
+ path.join(__dirname, '../../../../../assets/field-font-alignment.pdf'),
+ );
+ formData.append('files', new File([pdfData], 'test.pdf', { type: 'application/pdf' }));
+
+ const res = await request.post(`${baseUrl}/envelope/create`, {
+ headers: { Authorization: `Bearer ${token}` },
+ multipart: formData,
+ });
+
+ expect(res.ok()).toBeTruthy();
+ return (await res.json()) as TCreateEnvelopeResponse;
+ };
+
+ test('should find envelopes with pagination', async ({ request }) => {
+ // Create 3 envelopes
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.DOCUMENT,
+ title: 'Document 1',
+ });
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.DOCUMENT,
+ title: 'Document 2',
+ });
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.TEMPLATE,
+ title: 'Template 1',
+ });
+
+ // Find all envelopes
+ const res = await request.get(`${baseUrl}/envelope`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const response = (await res.json()) as TFindEnvelopesResponse;
+
+ expect(response.data.length).toBe(3);
+ expect(response.count).toBe(3);
+ expect(response.currentPage).toBe(1);
+ expect(response.totalPages).toBe(1);
+
+ // Test pagination
+ const paginatedRes = await request.get(`${baseUrl}/envelope?perPage=2&page=1`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(paginatedRes.ok()).toBeTruthy();
+ const paginatedResponse = (await paginatedRes.json()) as TFindEnvelopesResponse;
+
+ expect(paginatedResponse.data.length).toBe(2);
+ expect(paginatedResponse.count).toBe(3);
+ expect(paginatedResponse.totalPages).toBe(2);
+ });
+
+ test('should filter envelopes by type', async ({ request }) => {
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.DOCUMENT,
+ title: 'Document Only',
+ });
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.TEMPLATE,
+ title: 'Template Only',
+ });
+
+ // Filter by DOCUMENT type
+ const documentRes = await request.get(`${baseUrl}/envelope?type=DOCUMENT`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(documentRes.ok()).toBeTruthy();
+ const documentResponse = (await documentRes.json()) as TFindEnvelopesResponse;
+
+ expect(documentResponse.data.every((e) => e.type === EnvelopeType.DOCUMENT)).toBe(true);
+
+ // Filter by TEMPLATE type
+ const templateRes = await request.get(`${baseUrl}/envelope?type=TEMPLATE`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(templateRes.ok()).toBeTruthy();
+ const templateResponse = (await templateRes.json()) as TFindEnvelopesResponse;
+
+ expect(templateResponse.data.every((e) => e.type === EnvelopeType.TEMPLATE)).toBe(true);
+ });
+
+ test('should filter envelopes by status', async ({ request }) => {
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.DOCUMENT,
+ title: 'Draft Document',
+ });
+
+ // Filter by DRAFT status (default for new envelopes)
+ const res = await request.get(`${baseUrl}/envelope?status=DRAFT`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ const response = (await res.json()) as TFindEnvelopesResponse;
+
+ expect(response.data.every((e) => e.status === DocumentStatus.DRAFT)).toBe(true);
+ });
+
+ test('should search envelopes by query', async ({ request }) => {
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.DOCUMENT,
+ title: 'Unique Searchable Title',
+ });
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.DOCUMENT,
+ title: 'Another Document',
+ });
+
+ const res = await request.get(`${baseUrl}/envelope?query=Unique%20Searchable`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ const response = (await res.json()) as TFindEnvelopesResponse;
+
+ expect(response.data.length).toBe(1);
+ expect(response.data[0].title).toBe('Unique Searchable Title');
+ });
+
+ test('should not return envelopes from other users', async ({ request }) => {
+ // Create envelope for userA
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.DOCUMENT,
+ title: 'UserA Document',
+ });
+
+ // Create envelope for userB
+ await createEnvelope(request, tokenB, {
+ type: EnvelopeType.DOCUMENT,
+ title: 'UserB Document',
+ });
+
+ // userA should only see their own envelopes
+ const resA = await request.get(`${baseUrl}/envelope`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(resA.ok()).toBeTruthy();
+ const responseA = (await resA.json()) as TFindEnvelopesResponse;
+
+ expect(responseA.data.every((e) => e.title !== 'UserB Document')).toBe(true);
+
+ // userB should only see their own envelopes
+ const resB = await request.get(`${baseUrl}/envelope`, {
+ headers: { Authorization: `Bearer ${tokenB}` },
+ });
+
+ expect(resB.ok()).toBeTruthy();
+ const responseB = (await resB.json()) as TFindEnvelopesResponse;
+
+ expect(responseB.data.every((e) => e.title !== 'UserA Document')).toBe(true);
+ });
+
+ test('should return envelope with expected schema fields', async ({ request }) => {
+ await createEnvelope(request, tokenA, {
+ type: EnvelopeType.DOCUMENT,
+ title: 'Schema Test Document',
+ });
+
+ const res = await request.get(`${baseUrl}/envelope`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ const response = (await res.json()) as TFindEnvelopesResponse;
+
+ const envelope = response.data.find((e) => e.title === 'Schema Test Document');
+
+ expect(envelope).toBeDefined();
+ expect(envelope?.id).toBeDefined();
+ expect(envelope?.type).toBe(EnvelopeType.DOCUMENT);
+ expect(envelope?.status).toBe(DocumentStatus.DRAFT);
+ expect(envelope?.recipients).toBeDefined();
+ expect(envelope?.user).toBeDefined();
+ expect(envelope?.team).toBeDefined();
+ });
+ });
+
test.describe('Empty recipient tests', () => {
test('Create template envelope with empty email recipient', async ({ request }) => {
const payload = {
diff --git a/packages/app-tests/e2e/api/v2/test-unauthorized-api-access.spec.ts b/packages/app-tests/e2e/api/v2/test-unauthorized-api-access.spec.ts
index 24cf79a43..fd070f183 100644
--- a/packages/app-tests/e2e/api/v2/test-unauthorized-api-access.spec.ts
+++ b/packages/app-tests/e2e/api/v2/test-unauthorized-api-access.spec.ts
@@ -12,14 +12,17 @@ import {
} from '@documenso/lib/utils/envelope';
import { prisma } from '@documenso/prisma';
import {
+ DocumentStatus,
DocumentVisibility,
EnvelopeType,
FieldType,
+ FolderType,
Prisma,
ReadStatus,
RecipientRole,
SendStatus,
SigningStatus,
+ TeamMemberRole,
} from '@documenso/prisma/client';
import {
seedBlankDocument,
@@ -28,14 +31,18 @@ import {
seedPendingDocument,
} from '@documenso/prisma/seed/documents';
import { seedBlankFolder } from '@documenso/prisma/seed/folders';
+import { seedTeamMember } from '@documenso/prisma/seed/teams';
import { seedBlankTemplate, seedTemplate } from '@documenso/prisma/seed/templates';
import { seedUser } from '@documenso/prisma/seed/users';
import type { TCreateEnvelopeItemsPayload } from '@documenso/trpc/server/envelope-router/create-envelope-items.types';
+import type { TFindEnvelopesResponse } from '@documenso/trpc/server/envelope-router/find-envelopes.types';
import type {
TUseEnvelopePayload,
TUseEnvelopeResponse,
} from '@documenso/trpc/server/envelope-router/use-envelope.types';
+import { apiSignin } from '../../fixtures/authentication';
+
const WEBAPP_BASE_URL = NEXT_PUBLIC_WEBAPP_URL();
test.describe.configure({
@@ -2990,6 +2997,566 @@ test.describe('Document API V2', () => {
});
});
+ test.describe('Envelope get-many endpoint', () => {
+ test('should block unauthorized access to envelope get-many endpoint', async ({
+ request,
+ }) => {
+ const doc1 = await seedBlankDocument(userA, teamA.id);
+ const doc2 = await seedBlankDocument(userA, teamA.id);
+
+ const res = await request.post(`${WEBAPP_BASE_URL}/api/v2-beta/envelope/get-many`, {
+ headers: { Authorization: `Bearer ${tokenB}` },
+ data: {
+ ids: {
+ type: 'envelopeId',
+ ids: [doc1.id, doc2.id],
+ },
+ },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const { data } = await res.json();
+ expect(data).toEqual([]);
+ });
+
+ test('should allow authorized access to envelope get-many endpoint', async ({ request }) => {
+ const doc1 = await seedBlankDocument(userA, teamA.id);
+ const doc2 = await seedBlankDocument(userA, teamA.id);
+
+ const res = await request.post(`${WEBAPP_BASE_URL}/api/v2-beta/envelope/get-many`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ data: {
+ ids: {
+ type: 'envelopeId',
+ ids: [doc1.id, doc2.id],
+ },
+ },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const { data } = await res.json();
+ expect(data.length).toBe(2);
+ expect(data.map((d: { id: string }) => d.id).sort()).toEqual([doc1.id, doc2.id].sort());
+ });
+
+ test('should only return authorized envelopes when mixing owned and unowned', async ({
+ request,
+ }) => {
+ const docA = await seedBlankDocument(userA, teamA.id);
+ const docB = await seedBlankDocument(userB, teamB.id);
+
+ const res = await request.post(`${WEBAPP_BASE_URL}/api/v2-beta/envelope/get-many`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ data: {
+ ids: {
+ type: 'envelopeId',
+ ids: [docA.id, docB.id],
+ },
+ },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const { data } = await res.json();
+ expect(data.length).toBe(1);
+ expect(data[0].id).toBe(docA.id);
+ });
+
+ test('should block unauthorized access with documentId type', async ({ request }) => {
+ const doc1 = await seedBlankDocument(userA, teamA.id);
+ const doc2 = await seedBlankDocument(userA, teamA.id);
+
+ const res = await request.post(`${WEBAPP_BASE_URL}/api/v2-beta/envelope/get-many`, {
+ headers: { Authorization: `Bearer ${tokenB}` },
+ data: {
+ ids: {
+ type: 'documentId',
+ ids: [
+ mapSecondaryIdToDocumentId(doc1.secondaryId),
+ mapSecondaryIdToDocumentId(doc2.secondaryId),
+ ],
+ },
+ },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const { data } = await res.json();
+ expect(data).toEqual([]);
+ });
+
+ test('should allow authorized access with documentId type', async ({ request }) => {
+ const doc1 = await seedBlankDocument(userA, teamA.id);
+ const doc2 = await seedBlankDocument(userA, teamA.id);
+
+ const res = await request.post(`${WEBAPP_BASE_URL}/api/v2-beta/envelope/get-many`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ data: {
+ ids: {
+ type: 'documentId',
+ ids: [
+ mapSecondaryIdToDocumentId(doc1.secondaryId),
+ mapSecondaryIdToDocumentId(doc2.secondaryId),
+ ],
+ },
+ },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const { data } = await res.json();
+ expect(data.length).toBe(2);
+ });
+
+ test('should block unauthorized access with templateId type', async ({ request }) => {
+ const template1 = await seedBlankTemplate(userA, teamA.id);
+ const template2 = await seedBlankTemplate(userA, teamA.id);
+
+ const res = await request.post(`${WEBAPP_BASE_URL}/api/v2-beta/envelope/get-many`, {
+ headers: { Authorization: `Bearer ${tokenB}` },
+ data: {
+ ids: {
+ type: 'templateId',
+ ids: [
+ mapSecondaryIdToTemplateId(template1.secondaryId),
+ mapSecondaryIdToTemplateId(template2.secondaryId),
+ ],
+ },
+ },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const { data } = await res.json();
+ expect(data).toEqual([]);
+ });
+
+ test('should allow authorized access with templateId type', async ({ request }) => {
+ const template1 = await seedBlankTemplate(userA, teamA.id);
+ const template2 = await seedBlankTemplate(userA, teamA.id);
+
+ const res = await request.post(`${WEBAPP_BASE_URL}/api/v2-beta/envelope/get-many`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ data: {
+ ids: {
+ type: 'templateId',
+ ids: [
+ mapSecondaryIdToTemplateId(template1.secondaryId),
+ mapSecondaryIdToTemplateId(template2.secondaryId),
+ ],
+ },
+ },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const { data } = await res.json();
+ expect(data.length).toBe(2);
+ });
+
+ test('should reject requests exceeding max ID limit', async ({ request }) => {
+ const ids = Array.from({ length: 21 }, () => 'envelope_fake123');
+
+ const res = await request.post(`${WEBAPP_BASE_URL}/api/v2-beta/envelope/get-many`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ data: {
+ ids: {
+ type: 'envelopeId',
+ ids,
+ },
+ },
+ });
+
+ expect(res.ok()).toBeFalsy();
+ expect(res.status()).toBe(400);
+ });
+ });
+
+ test.describe('Envelope get-many tRPC endpoint (teamId manipulation)', () => {
+ test('should block access when user manipulates x-team-id to another team', async ({
+ page,
+ }) => {
+ // Create documents for userA in teamA
+ const doc1 = await seedBlankDocument(userA, teamA.id);
+ const doc2 = await seedBlankDocument(userA, teamA.id);
+
+ // Sign in as userB
+ await apiSignin({ page, email: userB.email });
+
+ const res = await page
+ .context()
+ .request.post(`${WEBAPP_BASE_URL}/api/trpc/envelope.getMany`, {
+ headers: {
+ 'x-team-id': String(teamA.id),
+ },
+ data: {
+ json: {
+ ids: {
+ type: 'envelopeId',
+ ids: [doc1.id, doc2.id],
+ },
+ },
+ },
+ });
+
+ // Make tRPC request with manipulated x-team-id pointing to teamA (which userB doesn't belong to)
+ expect(res.ok()).toBeFalsy();
+ // Team not found
+ expect(res.status()).toBe(404);
+ });
+
+ test('should allow access when user uses their own team id', async ({ page }) => {
+ // Create documents for userA in teamA
+ const doc1 = await seedBlankDocument(userA, teamA.id);
+ const doc2 = await seedBlankDocument(userA, teamA.id);
+
+ // Sign in as userA
+ await apiSignin({ page, email: userA.email });
+
+ const res = await page
+ .context()
+ .request.post(`${WEBAPP_BASE_URL}/api/trpc/envelope.getMany`, {
+ headers: {
+ 'Content-Type': 'application/json',
+ 'x-team-id': String(teamA.id),
+ },
+ data: {
+ json: {
+ ids: {
+ type: 'envelopeId',
+ ids: [doc1.id, doc2.id],
+ },
+ },
+ },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const data = await res.json();
+
+ const items = data.result.data.json.data;
+
+ expect(items.length).toBe(2);
+ expect(items.map((d: { id: string }) => d.id).sort()).toEqual([doc1.id, doc2.id].sort());
+ });
+
+ test('should block access when switching team id mid-request to access other team data', async ({
+ page,
+ }) => {
+ // Create a document for userA in teamA
+ const docA = await seedBlankDocument(userA, teamA.id);
+ // Create a document for userB in teamB
+ const docB = await seedBlankDocument(userB, teamB.id);
+
+ // Sign in as userB
+ await apiSignin({ page, email: userB.email });
+
+ const res = await page
+ .context()
+ .request.post(`${WEBAPP_BASE_URL}/api/trpc/envelope.getMany`, {
+ headers: {
+ 'x-team-id': String(teamA.id),
+ },
+ data: {
+ json: {
+ ids: {
+ type: 'envelopeId',
+ ids: [docA.id, docB.id],
+ },
+ },
+ },
+ });
+
+ // UserB tries to access both documents by manipulating teamId to teamA
+ // Should fail - userB is not a member of teamA
+ expect(res.ok()).toBeFalsy();
+ // Team not found
+ expect(res.status()).toBe(404);
+ });
+ });
+
+ test.describe('Envelope find endpoint', () => {
+ test('should block unauthorized access to envelope find endpoint', async ({ request }) => {
+ await seedBlankDocument(userA, teamA.id);
+
+ const res = await request.get(`${WEBAPP_BASE_URL}/api/v2-beta/envelope`, {
+ headers: { Authorization: `Bearer ${tokenB}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const data = (await res.json()) as TFindEnvelopesResponse;
+ expect(data.data.every((doc) => doc.userId !== userA.id)).toBe(true);
+ });
+
+ test('should allow authorized access to envelope find endpoint', async ({ request }) => {
+ await seedBlankDocument(userA, teamA.id);
+
+ const res = await request.get(`${WEBAPP_BASE_URL}/api/v2-beta/envelope`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ expect(res.status()).toBe(200);
+
+ const data = (await res.json()) as TFindEnvelopesResponse;
+ expect(data.data.length).toBeGreaterThan(0);
+ expect(data.data.some((doc) => doc.userId === userA.id)).toBe(true);
+ });
+
+ test('should respect team document visibility for ADMIN role', async ({ request }) => {
+ const adminMember = await seedTeamMember({
+ teamId: teamA.id,
+ role: TeamMemberRole.ADMIN,
+ });
+
+ const { token: adminToken } = await createApiToken({
+ userId: adminMember.id,
+ teamId: teamA.id,
+ tokenName: 'adminMember',
+ expiresIn: null,
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ visibility: DocumentVisibility.ADMIN,
+ title: 'Admin Only Document',
+ },
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ visibility: DocumentVisibility.MANAGER_AND_ABOVE,
+ title: 'Manager and Above Document',
+ },
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ visibility: DocumentVisibility.EVERYONE,
+ title: 'Everyone Document',
+ },
+ });
+
+ const res = await request.get(`${WEBAPP_BASE_URL}/api/v2-beta/envelope`, {
+ headers: { Authorization: `Bearer ${adminToken}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ const data = (await res.json()) as TFindEnvelopesResponse;
+
+ const titles = data.data.map((doc) => doc.title);
+ expect(titles).toContain('Admin Only Document');
+ expect(titles).toContain('Manager and Above Document');
+ expect(titles).toContain('Everyone Document');
+ });
+
+ test('should respect team document visibility for MANAGER role', async ({ request }) => {
+ const managerMember = await seedTeamMember({
+ teamId: teamA.id,
+ role: TeamMemberRole.MANAGER,
+ });
+
+ const { token: managerToken } = await createApiToken({
+ userId: managerMember.id,
+ teamId: teamA.id,
+ tokenName: 'managerMember',
+ expiresIn: null,
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ visibility: DocumentVisibility.ADMIN,
+ title: 'Admin Only Document',
+ },
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ visibility: DocumentVisibility.MANAGER_AND_ABOVE,
+ title: 'Manager and Above Document',
+ },
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ visibility: DocumentVisibility.EVERYONE,
+ title: 'Everyone Document',
+ },
+ });
+
+ const res = await request.get(`${WEBAPP_BASE_URL}/api/v2-beta/envelope`, {
+ headers: { Authorization: `Bearer ${managerToken}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ const data = (await res.json()) as TFindEnvelopesResponse;
+
+ const titles = data.data.map((doc) => doc.title);
+ expect(titles).not.toContain('Admin Only Document');
+ expect(titles).toContain('Manager and Above Document');
+ expect(titles).toContain('Everyone Document');
+ });
+
+ test('should filter envelopes by folderId with authorization', async ({ request }) => {
+ const folder = await prisma.folder.create({
+ data: {
+ userId: userA.id,
+ teamId: teamA.id,
+ name: 'Test Folder',
+ type: FolderType.DOCUMENT,
+ },
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ folderId: folder.id,
+ title: 'Document in Folder',
+ },
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ title: 'Document Not in Folder',
+ },
+ });
+
+ const resWithFolder = await request.get(
+ `${WEBAPP_BASE_URL}/api/v2-beta/envelope?folderId=${folder.id}`,
+ {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ },
+ );
+
+ expect(resWithFolder.ok()).toBeTruthy();
+ const dataWithFolder = (await resWithFolder.json()) as TFindEnvelopesResponse;
+ expect(dataWithFolder.data.every((doc) => doc.folderId === folder.id)).toBe(true);
+ expect(dataWithFolder.data.some((doc) => doc.title === 'Document in Folder')).toBe(true);
+
+ const resUnauthorized = await request.get(
+ `${WEBAPP_BASE_URL}/api/v2-beta/envelope?folderId=${folder.id}`,
+ {
+ headers: { Authorization: `Bearer ${tokenB}` },
+ },
+ );
+
+ expect(resUnauthorized.ok()).toBeTruthy();
+ const dataUnauthorized = (await resUnauthorized.json()) as TFindEnvelopesResponse;
+ expect(
+ dataUnauthorized.data.every(
+ (doc) => doc.folderId !== folder.id || doc.userId !== userA.id,
+ ),
+ ).toBe(true);
+ });
+
+ test('should filter envelopes by type with authorization', async ({ request }) => {
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ type: EnvelopeType.DOCUMENT,
+ title: 'UserA Document',
+ },
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ type: EnvelopeType.TEMPLATE,
+ title: 'UserA Template',
+ },
+ });
+
+ await seedBlankDocument(userB, teamB.id, {
+ createDocumentOptions: {
+ type: EnvelopeType.DOCUMENT,
+ title: 'UserB Document',
+ },
+ });
+
+ const res = await request.get(`${WEBAPP_BASE_URL}/api/v2-beta/envelope?type=DOCUMENT`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ const data = (await res.json()) as TFindEnvelopesResponse;
+ expect(data.data.every((doc) => doc.type === EnvelopeType.DOCUMENT)).toBe(true);
+ expect(data.data.every((doc) => doc.userId === userA.id)).toBe(true);
+ expect(data.data.some((doc) => doc.title === 'UserA Document')).toBe(true);
+ expect(data.data.every((doc) => doc.title !== 'UserB Document')).toBe(true);
+ });
+
+ test('should filter envelopes by status with authorization', async ({ request }) => {
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ title: 'Draft Document',
+ status: DocumentStatus.DRAFT,
+ },
+ });
+
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ title: 'Completed Document',
+ status: DocumentStatus.COMPLETED,
+ },
+ });
+
+ await seedBlankDocument(userB, teamB.id, {
+ createDocumentOptions: {
+ title: 'UserB Draft',
+ status: DocumentStatus.DRAFT,
+ },
+ });
+
+ const res = await request.get(`${WEBAPP_BASE_URL}/api/v2-beta/envelope?status=DRAFT`, {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ });
+
+ expect(res.ok()).toBeTruthy();
+ const data = (await res.json()) as TFindEnvelopesResponse;
+ expect(data.data.every((doc) => doc.status === DocumentStatus.DRAFT)).toBe(true);
+ expect(data.data.every((doc) => doc.userId === userA.id)).toBe(true);
+ expect(data.data.some((doc) => doc.title === 'Draft Document')).toBe(true);
+ expect(data.data.every((doc) => doc.title !== 'UserB Draft')).toBe(true);
+ expect(data.data.every((doc) => doc.title !== 'Completed Document')).toBe(true);
+ });
+
+ test('should search envelopes by query with authorization', async ({ request }) => {
+ await seedBlankDocument(userA, teamA.id, {
+ createDocumentOptions: {
+ title: 'Unique Searchable Title UserA',
+ },
+ });
+
+ await seedBlankDocument(userB, teamB.id, {
+ createDocumentOptions: {
+ title: 'Unique Searchable Title UserB',
+ },
+ });
+
+ const res = await request.get(
+ `${WEBAPP_BASE_URL}/api/v2-beta/envelope?query=Unique%20Searchable`,
+ {
+ headers: { Authorization: `Bearer ${tokenA}` },
+ },
+ );
+
+ expect(res.ok()).toBeTruthy();
+ const data = (await res.json()) as TFindEnvelopesResponse;
+ expect(data.data.every((doc) => doc.userId === userA.id)).toBe(true);
+ expect(data.data.some((doc) => doc.title.includes('UserA'))).toBe(true);
+ expect(data.data.every((doc) => !doc.title.includes('UserB'))).toBe(true);
+ });
+ });
+
test.describe('Envelope update endpoint', () => {
test('should block unauthorized access to envelope update endpoint', async ({ request }) => {
const doc = await seedBlankDocument(userA, teamA.id);
diff --git a/packages/app-tests/e2e/folders/team-account-folders.spec.ts b/packages/app-tests/e2e/folders/team-account-folders.spec.ts
index 333518882..40dc60ba9 100644
--- a/packages/app-tests/e2e/folders/team-account-folders.spec.ts
+++ b/packages/app-tests/e2e/folders/team-account-folders.spec.ts
@@ -364,6 +364,25 @@ test('[TEAMS]: can create a template subfolder inside a template folder', async
test('[TEAMS]: can create a template inside a template folder', async ({ page }) => {
const { team, teamOwner } = await seedTeamDocuments();
+ const organisationClaim = await prisma.organisationClaim.findFirstOrThrow({
+ where: {
+ organisation: {
+ id: team.organisationId,
+ },
+ },
+ });
+
+ await prisma.organisationClaim.update({
+ where: {
+ id: organisationClaim.id,
+ },
+ data: {
+ flags: {
+ allowLegacyEnvelopes: true,
+ },
+ },
+ });
+
const folder = await seedBlankFolder(teamOwner, team.id, {
createFolderOptions: {
name: 'Team Client Templates',
@@ -380,7 +399,11 @@ test('[TEAMS]: can create a template inside a template folder', async ({ page })
await expect(page.getByText('Team Client Templates')).toBeVisible();
- await page.getByRole('button', { name: 'Template (Legacy)' }).click();
+ // Upload document.
+ const [fileChooser] = await Promise.all([
+ page.waitForEvent('filechooser'),
+ page.getByRole('button', { name: 'Template (Legacy)' }).click(),
+ ]);
await page.getByText('Upload Template Document').click();
diff --git a/packages/auth/server/index.ts b/packages/auth/server/index.ts
index 1bdc40ee3..c402fcb76 100644
--- a/packages/auth/server/index.ts
+++ b/packages/auth/server/index.ts
@@ -81,6 +81,7 @@ auth.onError((err, c) => {
}
// Handle other errors
+ console.error('Unknown Error:', err);
return c.json(
{
code: AppErrorCode.UNKNOWN_ERROR,
diff --git a/packages/ee/FEATURES b/packages/ee/FEATURES
index aa29a8a13..c557e79ef 100644
--- a/packages/ee/FEATURES
+++ b/packages/ee/FEATURES
@@ -3,3 +3,8 @@ Copyright (c) 2023 Documenso, Inc
- The Stripe Billing Module
- Document Action Reauthentication (Passkeys and 2FA)
+- 21 CFR
+- Email domains
+- Embed authoring
+- Embed authoring white label
+- Enterprise level support + possible SLAs and license changes
diff --git a/packages/email/template-components/template-footer.tsx b/packages/email/template-components/template-footer.tsx
index 58b015c4d..2239613aa 100644
--- a/packages/email/template-components/template-footer.tsx
+++ b/packages/email/template-components/template-footer.tsx
@@ -17,8 +17,9 @@ export const TemplateFooter = ({ isDocument = true }: TemplateFooterProps) => {
This document was sent using{' '}
- Documenso.
+ Documenso
+ .
)}
diff --git a/packages/email/templates/confirm-team-email.tsx b/packages/email/templates/confirm-team-email.tsx
index 65b52cd3b..e6aa2a272 100644
--- a/packages/email/templates/confirm-team-email.tsx
+++ b/packages/email/templates/confirm-team-email.tsx
@@ -106,14 +106,14 @@ export const ConfirmTeamEmailTemplate = ({
You can revoke access at any time in your team settings on Documenso{' '}
- here.
+ here.
Accept
diff --git a/packages/email/templates/reset-password.tsx b/packages/email/templates/reset-password.tsx
index cd971140a..2e8d2d9f9 100644
--- a/packages/email/templates/reset-password.tsx
+++ b/packages/email/templates/reset-password.tsx
@@ -72,9 +72,10 @@ export const ResetPasswordTemplate = ({
Didn't request a password change? We are here to help you secure your account,
just{' '}
-
- contact us.
+
+ contact us
+ .
diff --git a/packages/lib/jobs/client/local.ts b/packages/lib/jobs/client/local.ts
index 999f47ee4..0540c137e 100644
--- a/packages/lib/jobs/client/local.ts
+++ b/packages/lib/jobs/client/local.ts
@@ -63,6 +63,7 @@ export class LocalJobProvider extends BaseJobProvider {
jobId: pendingJob.id,
jobDefinitionId: pendingJob.jobId,
data: options,
+ isRetry: false,
});
}),
);
@@ -198,6 +199,7 @@ export class LocalJobProvider extends BaseJobProvider {
jobId,
jobDefinitionId: backgroundJob.jobId,
data: options,
+ isRetry: true,
});
}
diff --git a/packages/lib/server-only/ai/envelope/detect-fields/index.ts b/packages/lib/server-only/ai/envelope/detect-fields/index.ts
index da85cd571..f4b65300f 100644
--- a/packages/lib/server-only/ai/envelope/detect-fields/index.ts
+++ b/packages/lib/server-only/ai/envelope/detect-fields/index.ts
@@ -286,7 +286,7 @@ const detectFieldsFromPage = async ({
});
const result = await generateObject({
- model: vertex('gemini-3-pro-preview'),
+ model: vertex('gemini-3-flash-preview'),
system: SYSTEM_PROMPT,
schema: ZSubmitDetectedFieldsInputSchema,
messages,
diff --git a/packages/lib/server-only/ai/envelope/detect-recipients/index.ts b/packages/lib/server-only/ai/envelope/detect-recipients/index.ts
index 0544b729f..d59fb7f17 100644
--- a/packages/lib/server-only/ai/envelope/detect-recipients/index.ts
+++ b/packages/lib/server-only/ai/envelope/detect-recipients/index.ts
@@ -207,7 +207,7 @@ const detectRecipientsFromImages = async ({
});
const result = await generateObject({
- model: vertex('gemini-2.5-flash'),
+ model: vertex('gemini-3-flash-preview'),
system: SYSTEM_PROMPT,
schema: ZDetectedRecipientsSchema,
messages,
diff --git a/packages/lib/server-only/ai/pdf-to-images.ts b/packages/lib/server-only/ai/pdf-to-images.ts
index a52c281dd..e14128278 100644
--- a/packages/lib/server-only/ai/pdf-to-images.ts
+++ b/packages/lib/server-only/ai/pdf-to-images.ts
@@ -9,7 +9,10 @@ globalThis.Image = Image;
class SkiaCanvasFactory {
_createCanvas(width: number, height: number) {
- return new Canvas(width, height);
+ const canvas = new Canvas(width, height);
+ canvas.gpu = false;
+
+ return canvas;
}
create(width: number, height: number) {
@@ -44,10 +47,12 @@ export type PdfToImagesOptions = {
export const pdfToImages = async (pdfBytes: Uint8Array, options: PdfToImagesOptions = {}) => {
const { scale = 2 } = options;
- const pdf = await pdfjsLib.getDocument({
+ const task = await pdfjsLib.getDocument({
data: pdfBytes,
CanvasFactory: SkiaCanvasFactory,
- }).promise;
+ });
+
+ const pdf = await task.promise;
const images = await pMap(
Array.from({ length: pdf.numPages }),
@@ -58,6 +63,8 @@ export const pdfToImages = async (pdfBytes: Uint8Array, options: PdfToImagesOpti
const viewport = page.getViewport({ scale });
const canvas = new Canvas(viewport.width, viewport.height);
+ canvas.gpu = false;
+
const canvasContext = canvas.getContext('2d');
await page.render({
@@ -68,18 +75,23 @@ export const pdfToImages = async (pdfBytes: Uint8Array, options: PdfToImagesOpti
viewport,
}).promise;
- return {
+ const result = {
pageNumber,
image: await canvas.toBuffer('jpeg'),
width: Math.floor(viewport.width),
height: Math.floor(viewport.height),
mimeType: 'image/jpeg',
};
+
+ void page.cleanup();
+
+ return result;
},
{ concurrency: 10 },
);
- void pdf.destroy();
+ void pdf.destroy().catch((e) => console.error(e));
+ void task.destroy().catch((e) => console.error(e));
return images;
};
diff --git a/packages/lib/server-only/document/get-document-certificate-audit-logs.ts b/packages/lib/server-only/document/get-document-certificate-audit-logs.ts
index 7723fd1d5..6c7d0d213 100644
--- a/packages/lib/server-only/document/get-document-certificate-audit-logs.ts
+++ b/packages/lib/server-only/document/get-document-certificate-audit-logs.ts
@@ -20,6 +20,7 @@ export const getDocumentCertificateAuditLogs = async ({
DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_INSERTED,
DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED,
DOCUMENT_AUDIT_LOG_TYPE.EMAIL_SENT,
+ DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT,
],
},
},
@@ -37,6 +38,9 @@ export const getDocumentCertificateAuditLogs = async ({
[DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED]: auditLogs.filter(
(log) => log.type === DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED,
),
+ [DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT]: auditLogs.filter(
+ (log) => log.type === DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT,
+ ),
[DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_INSERTED]: auditLogs.filter(
(log) => log.type === DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_INSERTED,
),
diff --git a/packages/lib/server-only/envelope/create-envelope.ts b/packages/lib/server-only/envelope/create-envelope.ts
index 210346b4d..76902a596 100644
--- a/packages/lib/server-only/envelope/create-envelope.ts
+++ b/packages/lib/server-only/envelope/create-envelope.ts
@@ -81,6 +81,7 @@ export type CreateEnvelopeOptions = {
globalActionAuth?: TDocumentActionAuthTypes[];
recipients?: CreateEnvelopeRecipientOptions[];
folderId?: string;
+ delegatedDocumentOwner?: string;
};
attachments?: Array<{
label: string;
@@ -114,6 +115,7 @@ export const createEnvelope = async ({
publicTitle,
publicDescription,
visibility: visibilityOverride,
+ delegatedDocumentOwner,
} = data;
const team = await prisma.team.findFirst({
@@ -256,6 +258,43 @@ export const createEnvelope = async ({
? await incrementDocumentId().then((v) => v.formattedDocumentId)
: await incrementTemplateId().then((v) => v.formattedTemplateId);
+ const getValidatedDelegatedOwner = async () => {
+ if (
+ !settings.delegateDocumentOwnership ||
+ !delegatedDocumentOwner ||
+ requestMetadata.source === 'app'
+ ) {
+ return null;
+ }
+
+ const delegatedOwner = await prisma.user.findFirst({
+ where: {
+ email: delegatedDocumentOwner,
+ },
+ });
+
+ if (!delegatedOwner) {
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'Delegated document owner must be a member of the team',
+ });
+ }
+
+ const isTeamMember = await prisma.team.findFirst({
+ where: buildTeamWhereQuery({ teamId, userId: delegatedOwner.id }),
+ });
+
+ if (!isTeamMember) {
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'Delegated document owner must be a member of the team',
+ });
+ }
+
+ return delegatedOwner;
+ };
+
+ const delegatedOwner = await getValidatedDelegatedOwner();
+ const envelopeOwnerId = delegatedOwner?.id ?? userId;
+
return await prisma.$transaction(async (tx) => {
const envelope = await tx.envelope.create({
data: {
@@ -285,7 +324,7 @@ export const createEnvelope = async ({
})),
},
},
- userId,
+ userId: envelopeOwnerId,
teamId,
authOptions,
visibility,
@@ -393,6 +432,9 @@ export const createEnvelope = async ({
data: createDocumentAuditLogData({
type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_CREATED,
envelopeId: envelope.id,
+ user: {
+ id: envelopeOwnerId,
+ },
metadata: requestMetadata,
data: {
title,
@@ -403,6 +445,25 @@ export const createEnvelope = async ({
}),
});
+ // Create audit log for delegated owner if validation passed
+ if (delegatedOwner) {
+ await tx.documentAuditLog.create({
+ data: createDocumentAuditLogData({
+ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_DELEGATED_OWNER_CREATED,
+ envelopeId: envelope.id,
+ user: {
+ id: userId,
+ },
+ metadata: requestMetadata,
+ data: {
+ delegatedOwnerName: delegatedOwner.name,
+ delegatedOwnerEmail: delegatedOwner.email,
+ teamName: team.name,
+ },
+ }),
+ });
+ }
+
await triggerWebhook({
event: WebhookTriggerEvents.DOCUMENT_CREATED,
data: ZWebhookDocumentSchema.parse(mapEnvelopeToWebhookDocumentPayload(createdEnvelope)),
diff --git a/packages/lib/server-only/envelope/find-envelopes.ts b/packages/lib/server-only/envelope/find-envelopes.ts
new file mode 100644
index 000000000..03906d816
--- /dev/null
+++ b/packages/lib/server-only/envelope/find-envelopes.ts
@@ -0,0 +1,197 @@
+import type {
+ DocumentSource,
+ DocumentStatus,
+ Envelope,
+ EnvelopeType,
+ Prisma,
+} from '@prisma/client';
+
+import { prisma } from '@documenso/prisma';
+
+import { TEAM_DOCUMENT_VISIBILITY_MAP } from '../../constants/teams';
+import type { FindResultResponse } from '../../types/search-params';
+import { maskRecipientTokensForDocument } from '../../utils/mask-recipient-tokens-for-document';
+import { getTeamById } from '../team/get-team';
+
+export type FindEnvelopesOptions = {
+ userId: number;
+ teamId: number;
+ type?: EnvelopeType;
+ templateId?: number;
+ source?: DocumentSource;
+ status?: DocumentStatus;
+ page?: number;
+ perPage?: number;
+ orderBy?: {
+ column: keyof Pick;
+ direction: 'asc' | 'desc';
+ };
+ query?: string;
+ folderId?: string;
+};
+
+export const findEnvelopes = async ({
+ userId,
+ teamId,
+ type,
+ templateId,
+ source,
+ status,
+ page = 1,
+ perPage = 10,
+ orderBy,
+ query = '',
+ folderId,
+}: FindEnvelopesOptions) => {
+ const user = await prisma.user.findFirstOrThrow({
+ where: {
+ id: userId,
+ },
+ select: {
+ id: true,
+ email: true,
+ name: true,
+ },
+ });
+
+ const team = await getTeamById({
+ userId,
+ teamId,
+ });
+
+ const orderByColumn = orderBy?.column ?? 'createdAt';
+ const orderByDirection = orderBy?.direction ?? 'desc';
+
+ const searchFilter: Prisma.EnvelopeWhereInput = query
+ ? {
+ OR: [
+ { title: { contains: query, mode: 'insensitive' } },
+ { externalId: { contains: query, mode: 'insensitive' } },
+ { recipients: { some: { name: { contains: query, mode: 'insensitive' } } } },
+ { recipients: { some: { email: { contains: query, mode: 'insensitive' } } } },
+ ],
+ }
+ : {};
+
+ const visibilityFilter: Prisma.EnvelopeWhereInput = {
+ visibility: {
+ in: TEAM_DOCUMENT_VISIBILITY_MAP[team.currentTeamRole],
+ },
+ };
+
+ const teamEmailFilters: Prisma.EnvelopeWhereInput[] = [];
+
+ if (team.teamEmail) {
+ teamEmailFilters.push(
+ {
+ user: {
+ email: team.teamEmail.email,
+ },
+ },
+ {
+ recipients: {
+ some: {
+ email: team.teamEmail.email,
+ },
+ },
+ },
+ );
+ }
+
+ const whereClause: Prisma.EnvelopeWhereInput = {
+ AND: [
+ {
+ OR: [
+ {
+ teamId: team.id,
+ ...visibilityFilter,
+ },
+ {
+ userId,
+ },
+ ...teamEmailFilters,
+ ],
+ },
+ {
+ folderId: folderId ?? null,
+ deletedAt: null,
+ },
+ searchFilter,
+ ],
+ };
+
+ if (type) {
+ whereClause.type = type;
+ }
+
+ if (templateId) {
+ whereClause.templateId = templateId;
+ }
+
+ if (source) {
+ whereClause.source = source;
+ }
+
+ if (status) {
+ whereClause.status = status;
+ }
+
+ const [data, count] = await Promise.all([
+ prisma.envelope.findMany({
+ where: whereClause,
+ skip: Math.max(page - 1, 0) * perPage,
+ take: perPage,
+ orderBy: {
+ [orderByColumn]: orderByDirection,
+ },
+ include: {
+ user: {
+ select: {
+ id: true,
+ name: true,
+ email: true,
+ },
+ },
+ recipients: {
+ orderBy: {
+ id: 'asc',
+ },
+ },
+ team: {
+ select: {
+ id: true,
+ url: true,
+ },
+ },
+ },
+ }),
+ prisma.envelope.count({
+ where: whereClause,
+ }),
+ ]);
+
+ const maskedData = data.map((envelope) =>
+ maskRecipientTokensForDocument({
+ document: envelope,
+ user,
+ }),
+ );
+
+ const mappedData = maskedData.map((envelope) => ({
+ ...envelope,
+ recipients: envelope.Recipient,
+ user: {
+ id: envelope.user.id,
+ name: envelope.user.name || '',
+ email: envelope.user.email,
+ },
+ }));
+
+ return {
+ data: mappedData,
+ count,
+ currentPage: Math.max(page, 1),
+ perPage,
+ totalPages: Math.ceil(count / perPage),
+ } satisfies FindResultResponse;
+};
diff --git a/packages/lib/server-only/envelope/get-envelopes-by-ids.ts b/packages/lib/server-only/envelope/get-envelopes-by-ids.ts
new file mode 100644
index 000000000..fcb23b2c7
--- /dev/null
+++ b/packages/lib/server-only/envelope/get-envelopes-by-ids.ts
@@ -0,0 +1,213 @@
+import type { EnvelopeType, Prisma } from '@prisma/client';
+
+import { prisma } from '@documenso/prisma';
+
+import { TEAM_DOCUMENT_VISIBILITY_MAP } from '../../constants/teams';
+import { AppError, AppErrorCode } from '../../errors/app-error';
+import type { EnvelopeIdsOptions } from '../../utils/envelope';
+import { unsafeBuildEnvelopeIdsQuery } from '../../utils/envelope';
+import { getTeamById } from '../team/get-team';
+
+export type GetEnvelopesByIdsOptions = {
+ /**
+ * The envelope IDs to fetch with their type.
+ */
+ ids: EnvelopeIdsOptions;
+
+ /**
+ * The user ID who has been authenticated.
+ */
+ userId: number;
+
+ /**
+ * The unvalidated team ID from the request.
+ */
+ teamId: number;
+
+ /**
+ * The type of envelope to get.
+ *
+ * Set to null to bypass check.
+ */
+ type: EnvelopeType | null;
+};
+
+/**
+ * Fetches multiple envelopes by their IDs with proper access control.
+ *
+ * Only returns envelopes that the user has valid access to based on:
+ * 1. Document ownership (userId matches)
+ * 2. Team membership with appropriate visibility level
+ * 3. Team email ownership
+ *
+ * NOTE: Be extremely careful when modifying this function. Needs at minimum two reviewers to approve any changes.
+ */
+export const getEnvelopesByIds = async ({
+ ids,
+ userId,
+ teamId,
+ type,
+}: GetEnvelopesByIdsOptions) => {
+ const { envelopeWhereInput } = await getMultipleEnvelopeWhereInput({
+ ids,
+ userId,
+ teamId,
+ type,
+ });
+
+ const envelopes = await prisma.envelope.findMany({
+ where: envelopeWhereInput,
+ include: {
+ envelopeItems: {
+ include: {
+ documentData: true,
+ },
+ orderBy: {
+ order: 'asc',
+ },
+ },
+ folder: true,
+ documentMeta: true,
+ user: {
+ select: {
+ id: true,
+ name: true,
+ email: true,
+ },
+ },
+ recipients: {
+ orderBy: {
+ id: 'asc',
+ },
+ },
+ fields: true,
+ team: {
+ select: {
+ id: true,
+ url: true,
+ },
+ },
+ directLink: {
+ select: {
+ directTemplateRecipientId: true,
+ enabled: true,
+ id: true,
+ token: true,
+ },
+ },
+ },
+ });
+
+ return envelopes.map((envelope) => ({
+ ...envelope,
+ user: {
+ id: envelope.user.id,
+ name: envelope.user.name || '',
+ email: envelope.user.email,
+ },
+ }));
+};
+
+export type GetEnvelopesByIdsResponse = Awaited>;
+
+export type GetMultipleEnvelopeWhereInputOptions = {
+ /**
+ * The envelope IDs to fetch with their type.
+ */
+ ids: EnvelopeIdsOptions;
+
+ /**
+ * The user ID who has been authenticated.
+ */
+ userId: number;
+
+ /**
+ * The unknown teamId from the request.
+ */
+ teamId: number;
+
+ /**
+ * The type of envelope to get.
+ *
+ * Set to null to bypass check.
+ */
+ type: EnvelopeType | null;
+};
+
+/**
+ * Generate the where input for a multiple envelope Prisma query.
+ *
+ * This will return a query that allows a user to get documents if they have valid access to them.
+ *
+ * NOTE: Be extremely careful when modifying this function. Needs at minimum two reviewers to approve any changes.
+ */
+export const getMultipleEnvelopeWhereInput = async ({
+ ids,
+ userId,
+ teamId,
+ type,
+}: GetMultipleEnvelopeWhereInputOptions) => {
+ // Backup validation incase something goes wrong.
+ if (!ids.ids || !userId || !teamId || type === undefined) {
+ console.error(`[CRTICAL ERROR]: MUST NEVER HAPPEN`);
+
+ throw new AppError(AppErrorCode.NOT_FOUND, {
+ message: 'Envelope IDs not found',
+ });
+ }
+
+ // Validate that the user belongs to the team provided.
+ const team = await getTeamById({ teamId, userId });
+
+ const envelopeOrInput: Prisma.EnvelopeWhereInput[] = [
+ // Allow access if they own the document.
+ {
+ userId,
+ },
+ // Or, if they belong to the team that the document is associated with.
+ {
+ visibility: {
+ in: TEAM_DOCUMENT_VISIBILITY_MAP[team.currentTeamRole],
+ },
+ teamId: team.id,
+ },
+ ];
+
+ // Allow access to documents sent from the team email.
+ if (team.teamEmail) {
+ envelopeOrInput.push({
+ user: {
+ email: team.teamEmail.email,
+ },
+ });
+ }
+
+ // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ // NOTE: DO NOT PUT ANY CODE AFTER THIS POINT.
+ // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+ const envelopeWhereInput: Prisma.EnvelopeWhereInput = {
+ ...unsafeBuildEnvelopeIdsQuery(ids, type),
+ OR: envelopeOrInput,
+ };
+
+ // Final backup validation incase something goes wrong.
+ if (
+ !envelopeWhereInput.OR ||
+ envelopeWhereInput.OR.length < 2 ||
+ !userId ||
+ !teamId ||
+ !team.id ||
+ teamId !== team.id
+ ) {
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'Query not valid',
+ });
+ }
+
+ // Do not modify this return directly, all adjustments need to be made prior to the above if statement.
+ return {
+ envelopeWhereInput,
+ team,
+ };
+};
diff --git a/packages/lib/server-only/envelope/orphan-envelopes.ts b/packages/lib/server-only/envelope/orphan-envelopes.ts
new file mode 100644
index 000000000..75cf6ee88
--- /dev/null
+++ b/packages/lib/server-only/envelope/orphan-envelopes.ts
@@ -0,0 +1,52 @@
+import { DocumentStatus, EnvelopeType } from '@prisma/client';
+
+import { prisma } from '@documenso/prisma';
+
+import { deletedAccountServiceAccount } from '../user/service-accounts/deleted-account';
+
+export type OrphanEnvelopesOptions = {
+ teamId: number;
+};
+
+export const orphanEnvelopes = async ({ teamId }: OrphanEnvelopesOptions) => {
+ const serviceAccount = await deletedAccountServiceAccount();
+
+ // Transfer all inflight and completed envelopes to the service account.
+ await prisma.envelope.updateMany({
+ where: {
+ teamId,
+ type: EnvelopeType.DOCUMENT,
+ status: {
+ in: [DocumentStatus.PENDING, DocumentStatus.REJECTED, DocumentStatus.COMPLETED],
+ },
+ deletedAt: null,
+ },
+ data: {
+ userId: serviceAccount.id,
+ teamId: serviceAccount.ownedOrganisations[0].teams[0].id,
+ deletedAt: new Date(),
+ },
+ });
+
+ // Transfer any remaining deleted envelopes to the service account.
+ await prisma.envelope.updateMany({
+ where: {
+ teamId,
+ type: EnvelopeType.DOCUMENT,
+ status: {
+ in: [DocumentStatus.PENDING, DocumentStatus.REJECTED, DocumentStatus.COMPLETED],
+ },
+ },
+ data: {
+ userId: serviceAccount.id,
+ teamId: serviceAccount.ownedOrganisations[0].teams[0].id,
+ },
+ });
+
+ // Then delete anything remaining across documents and templates.
+ await prisma.envelope.deleteMany({
+ where: {
+ teamId,
+ },
+ });
+};
diff --git a/packages/lib/server-only/envelope/transfer-team-envelopes.ts b/packages/lib/server-only/envelope/transfer-team-envelopes.ts
new file mode 100644
index 000000000..944b14d43
--- /dev/null
+++ b/packages/lib/server-only/envelope/transfer-team-envelopes.ts
@@ -0,0 +1,20 @@
+import { prisma } from '@documenso/prisma';
+
+export type TransferTeamEnvelopesOptions = {
+ sourceTeamId: number;
+ targetTeamId: number;
+};
+
+export const transferTeamEnvelopes = async ({
+ sourceTeamId,
+ targetTeamId,
+}: TransferTeamEnvelopesOptions) => {
+ await prisma.envelope.updateMany({
+ where: {
+ teamId: sourceTeamId,
+ },
+ data: {
+ teamId: targetTeamId,
+ },
+ });
+};
diff --git a/packages/lib/server-only/konva/skia-backend.ts b/packages/lib/server-only/konva/skia-backend.ts
new file mode 100644
index 000000000..bdcd4ec64
--- /dev/null
+++ b/packages/lib/server-only/konva/skia-backend.ts
@@ -0,0 +1,42 @@
+/**
+ * !: This is a workaround to fix the memory leak in the skia-canvas library.
+ * !: Internals are ported from the original `konva/skia-backend.js` file.
+ */
+import { Konva } from 'konva/lib/_CoreInternals';
+import { Canvas, DOMMatrix, Image, Path2D } from 'skia-canvas';
+
+// @ts-expect-error skia-canvas satisfies the requirements
+global.DOMMatrix = DOMMatrix;
+
+// @ts-expect-error skia-canvas satisfies the requirements
+global.Path2D = Path2D;
+Path2D.prototype.toString = () => '[object Path2D]';
+
+Konva.Util['createCanvasElement'] = () => {
+ const node = new Canvas(300, 300);
+ node.gpu = false;
+
+ if (!('style' in node) || !node['style']) {
+ Object.assign(node, { style: {} });
+ }
+
+ node.toString = () => '[object HTMLCanvasElement]';
+ const ctx = node.getContext('2d');
+
+ Object.defineProperty(ctx, 'canvas', {
+ get: () => node,
+ });
+
+ return node as unknown as HTMLCanvasElement;
+};
+
+Konva.Util.createImageElement = () => {
+ const node = new Image();
+ node.toString = () => '[object HTMLImageElement]';
+
+ return node as unknown as HTMLImageElement;
+};
+
+Konva._renderBackend = 'skia-canvas';
+
+export default Konva;
diff --git a/packages/lib/server-only/organisation/accept-organisation-invitation.ts b/packages/lib/server-only/organisation/accept-organisation-invitation.ts
index 717b81034..37fb82362 100644
--- a/packages/lib/server-only/organisation/accept-organisation-invitation.ts
+++ b/packages/lib/server-only/organisation/accept-organisation-invitation.ts
@@ -40,7 +40,10 @@ export const acceptOrganisationInvitation = async ({
const user = await prisma.user.findFirst({
where: {
- email: organisationMemberInvite.email,
+ email: {
+ equals: organisationMemberInvite.email,
+ mode: 'insensitive',
+ },
},
select: {
id: true,
diff --git a/packages/lib/server-only/pdf/flatten-form.ts b/packages/lib/server-only/pdf/flatten-form.ts
index 728eb0fa7..3c27751a3 100644
--- a/packages/lib/server-only/pdf/flatten-form.ts
+++ b/packages/lib/server-only/pdf/flatten-form.ts
@@ -4,8 +4,10 @@ import {
PDFDict,
type PDFDocument,
PDFName,
+ PDFNumber,
PDFRadioGroup,
PDFRef,
+ PDFStream,
drawObject,
popGraphicsState,
pushGraphicsState,
@@ -103,6 +105,36 @@ const getAppearanceRefForWidget = (field: PDFField, widget: PDFWidgetAnnotation)
}
};
+/**
+ * Ensures that an appearance stream has the required dictionary entries to be
+ * used as a Form XObject. Some PDFs have appearance streams that are missing
+ * the /Subtype /Form entry, which causes Adobe Reader to fail to render them.
+ *
+ * Per PDF spec, a Form XObject stream requires:
+ * - /Subtype /Form (required)
+ * - /BBox (required, but should already exist for appearance streams)
+ * - /FormType 1 (optional, defaults to 1)
+ */
+const normalizeAppearanceStream = (document: PDFDocument, appearanceRef: PDFRef) => {
+ const appearanceStream = document.context.lookup(appearanceRef);
+
+ if (!(appearanceStream instanceof PDFStream)) {
+ return;
+ }
+
+ const dict = appearanceStream.dict;
+
+ // Ensure /Subtype /Form is set (required for XObject Form)
+ if (!dict.has(PDFName.of('Subtype'))) {
+ dict.set(PDFName.of('Subtype'), PDFName.of('Form'));
+ }
+
+ // Ensure /FormType is set (optional, but good practice)
+ if (!dict.has(PDFName.of('FormType'))) {
+ dict.set(PDFName.of('FormType'), PDFNumber.of(1));
+ }
+};
+
const flattenWidget = (document: PDFDocument, field: PDFField, widget: PDFWidgetAnnotation) => {
try {
const page = getPageForWidget(document, widget);
@@ -117,6 +149,9 @@ const flattenWidget = (document: PDFDocument, field: PDFField, widget: PDFWidget
return;
}
+ // Ensure the appearance stream has required XObject Form dictionary entries
+ normalizeAppearanceStream(document, appearanceRef);
+
const xObjectKey = page.node.newXObject('FlatWidget', appearanceRef);
const rectangle = widget.getRectangle();
diff --git a/packages/lib/server-only/pdf/insert-field-in-pdf-v2.ts b/packages/lib/server-only/pdf/insert-field-in-pdf-v2.ts
index 26174911c..ccea99714 100644
--- a/packages/lib/server-only/pdf/insert-field-in-pdf-v2.ts
+++ b/packages/lib/server-only/pdf/insert-field-in-pdf-v2.ts
@@ -1,5 +1,5 @@
// sort-imports-ignore
-import 'konva/skia-backend';
+import '../konva/skia-backend';
import Konva from 'konva';
import path from 'node:path';
@@ -23,6 +23,7 @@ export const insertFieldInPDFV2 = async ({
}: InsertFieldInPDFV2Options) => {
const fontPath = path.join(process.cwd(), 'public/fonts');
+ // eslint-disable-next-line react-hooks/rules-of-hooks
FontLibrary.use({
['Caveat']: [path.join(fontPath, 'caveat.ttf')],
['Noto Sans']: [path.join(fontPath, 'noto-sans.ttf')],
@@ -31,8 +32,8 @@ export const insertFieldInPDFV2 = async ({
['Noto Sans Korean']: [path.join(fontPath, 'noto-sans-korean.ttf')],
});
- const stage = new Konva.Stage({ width: pageWidth, height: pageHeight });
- const layer = new Konva.Layer();
+ let stage: Konva.Stage | null = new Konva.Stage({ width: pageWidth, height: pageHeight });
+ let layer: Konva.Layer | null = new Konva.Layer();
// Render the fields onto the layer.
for (const field of fields) {
@@ -60,5 +61,13 @@ export const insertFieldInPDFV2 = async ({
const canvas = layer.canvas._canvas as unknown as Canvas;
// Embed the SVG into the PDF
- return await canvas.toBuffer('pdf');
+ const pdf = await canvas.toBuffer('pdf');
+
+ stage.destroy();
+ layer.destroy();
+
+ stage = null;
+ layer = null;
+
+ return pdf;
};
diff --git a/packages/lib/server-only/public-api/get-api-token-by-token.ts b/packages/lib/server-only/public-api/get-api-token-by-token.ts
index 925230bfd..6f384c34b 100644
--- a/packages/lib/server-only/public-api/get-api-token-by-token.ts
+++ b/packages/lib/server-only/public-api/get-api-token-by-token.ts
@@ -1,5 +1,6 @@
import { prisma } from '@documenso/prisma';
+import { AppError, AppErrorCode } from '../../errors/app-error';
import { hashString } from '../auth/hash';
export const getApiTokenByToken = async ({ token }: { token: string }) => {
@@ -38,11 +39,17 @@ export const getApiTokenByToken = async ({ token }: { token: string }) => {
});
if (!apiToken) {
- throw new Error('Invalid token');
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'Invalid token',
+ statusCode: 401,
+ });
}
if (apiToken.expires && apiToken.expires < new Date()) {
- throw new Error('Expired token');
+ throw new AppError(AppErrorCode.EXPIRED_CODE, {
+ message: 'Expired token',
+ statusCode: 401,
+ });
}
// Handle a silly choice from many moons ago
@@ -54,7 +61,10 @@ export const getApiTokenByToken = async ({ token }: { token: string }) => {
// This will never happen but we need to narrow types
if (!user) {
- throw new Error('Invalid token');
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'Invalid token',
+ statusCode: 401,
+ });
}
return {
diff --git a/packages/lib/server-only/public-api/get-user-by-token.ts b/packages/lib/server-only/public-api/get-user-by-token.ts
index a8c39f75b..887730b5c 100644
--- a/packages/lib/server-only/public-api/get-user-by-token.ts
+++ b/packages/lib/server-only/public-api/get-user-by-token.ts
@@ -1,5 +1,6 @@
import { prisma } from '@documenso/prisma';
+import { AppError, AppErrorCode } from '../../errors/app-error';
import { hashString } from '../auth/hash';
export const getUserByApiToken = async ({ token }: { token: string }) => {
@@ -19,14 +20,20 @@ export const getUserByApiToken = async ({ token }: { token: string }) => {
});
if (!user) {
- throw new Error('Invalid token');
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'Invalid token',
+ statusCode: 401,
+ });
}
const retrievedToken = user.apiTokens.find((apiToken) => apiToken.token === hashedToken);
// This should be impossible but we need to satisfy TypeScript
if (!retrievedToken) {
- throw new Error('Invalid token');
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'Invalid token',
+ statusCode: 401,
+ });
}
if (retrievedToken.expires && retrievedToken.expires < new Date()) {
diff --git a/packages/lib/server-only/template/create-document-from-direct-template.ts b/packages/lib/server-only/template/create-document-from-direct-template.ts
index cf852e030..e482d4d85 100644
--- a/packages/lib/server-only/template/create-document-from-direct-template.ts
+++ b/packages/lib/server-only/template/create-document-from-direct-template.ts
@@ -185,7 +185,7 @@ export const createDocumentFromDirectTemplate = async ({
documentAuth: directTemplateEnvelope.authOptions,
});
- const directRecipientName = user?.name || initialDirectRecipientName;
+ let directRecipientName = user?.name || initialDirectRecipientName;
// Ensure typesafety when we add more options.
const isAccessAuthValid = match(derivedRecipientAccessAuth.at(0))
@@ -238,7 +238,7 @@ export const createDocumentFromDirectTemplate = async ({
}
if (templateField.type === FieldType.NAME && directRecipientName === undefined) {
- directRecipientName === signedFieldValue?.value;
+ directRecipientName = signedFieldValue?.value;
}
const derivedRecipientActionAuth = await validateFieldAuth({
diff --git a/packages/lib/server-only/user/delete-user.ts b/packages/lib/server-only/user/delete-user.ts
index ccc7f7476..6a4da06a2 100644
--- a/packages/lib/server-only/user/delete-user.ts
+++ b/packages/lib/server-only/user/delete-user.ts
@@ -1,9 +1,7 @@
-import { DocumentStatus, EnvelopeType } from '@prisma/client';
-
import { prisma } from '@documenso/prisma';
import { AppError, AppErrorCode } from '../../errors/app-error';
-import { deletedAccountServiceAccount } from './service-accounts/deleted-account';
+import { orphanEnvelopes } from '../envelope/orphan-envelopes';
export type DeleteUserOptions = {
id: number;
@@ -14,6 +12,30 @@ export const deleteUser = async ({ id }: DeleteUserOptions) => {
where: {
id,
},
+ include: {
+ ownedOrganisations: {
+ include: {
+ teams: {
+ select: {
+ id: true,
+ },
+ },
+ },
+ },
+ organisationMember: {
+ include: {
+ organisation: {
+ include: {
+ teams: {
+ select: {
+ id: true,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
});
if (!user) {
@@ -22,22 +44,36 @@ export const deleteUser = async ({ id }: DeleteUserOptions) => {
});
}
- const serviceAccount = await deletedAccountServiceAccount();
+ // Get team IDs from organisations the user owns.
+ const ownedTeamIds = user.ownedOrganisations.flatMap((org) => org.teams.map((team) => team.id));
- // TODO: Send out cancellations for all pending docs
- await prisma.envelope.updateMany({
- where: {
- userId: user.id,
- type: EnvelopeType.DOCUMENT,
- status: {
- in: [DocumentStatus.PENDING, DocumentStatus.REJECTED, DocumentStatus.COMPLETED],
- },
- },
- data: {
- userId: serviceAccount.id,
- deletedAt: new Date(),
- },
- });
+ // Get team IDs from organisations the user is a member of (but not owner).
+ const memberTeams = user.organisationMember
+ .filter((member) => member.organisation.ownerUserId !== user.id)
+ .flatMap((member) =>
+ member.organisation.teams.map((team) => ({
+ teamId: team.id,
+ orgOwnerId: member.organisation.ownerUserId,
+ })),
+ );
+
+ // For teams where user is the org owner - orphan their envelopes.
+ await Promise.all(ownedTeamIds.map(async (teamId) => orphanEnvelopes({ teamId })));
+
+ // For teams where user is a member (not owner) - transfer envelopes to team owner.
+ await Promise.all(
+ memberTeams.map(async ({ teamId, orgOwnerId }) => {
+ return prisma.envelope.updateMany({
+ where: {
+ userId: user.id,
+ teamId,
+ },
+ data: {
+ userId: orgOwnerId,
+ },
+ });
+ }),
+ );
return await prisma.user.delete({
where: {
diff --git a/packages/lib/server-only/user/service-accounts/deleted-account.ts b/packages/lib/server-only/user/service-accounts/deleted-account.ts
index 6bfd6d25f..2c54d2f8c 100644
--- a/packages/lib/server-only/user/service-accounts/deleted-account.ts
+++ b/packages/lib/server-only/user/service-accounts/deleted-account.ts
@@ -5,6 +5,20 @@ export const deletedAccountServiceAccount = async () => {
where: {
email: 'deleted-account@documenso.com',
},
+ select: {
+ id: true,
+ email: true,
+ ownedOrganisations: {
+ select: {
+ id: true,
+ teams: {
+ select: {
+ id: true,
+ },
+ },
+ },
+ },
+ },
});
if (!serviceAccount) {
diff --git a/packages/lib/translations/de/web.po b/packages/lib/translations/de/web.po
index d56dec37c..f5de6d294 100644
--- a/packages/lib/translations/de/web.po
+++ b/packages/lib/translations/de/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2025-11-27 05:32\n"
+"PO-Revision-Date: 2025-12-15 02:39\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -68,7 +68,7 @@ msgstr "{0, plural, one {(1 Zeichen über dem Limit)} other {(# Zeichen über de
#. placeholder {2}: table.getFilteredSelectedRowModel().rows.length
#: packages/ui/primitives/data-table-pagination.tsx
msgid "{0, plural, one {{1} of # row selected.} other {{2} of # rows selected.}}"
-msgstr ""
+msgstr "{0, plural, one {{1} von # Zeile ausgewählt.} other {{2} von # Zeilen ausgewählt.}}"
#. placeholder {0}: Math.abs(remaningLength)
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
@@ -101,6 +101,11 @@ msgstr "{0, plural, one {# Feld} other {# Felder}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, one {# Ordner} other {# Ordner}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, one {# Empfänger wurde durch die KI-Erkennung hinzugefügt.} other {# Empfänger wurden durch die KI-Erkennung hinzugefügt.}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -151,11 +156,44 @@ msgstr "{0, plural, one {1 passendes Feld} other {# passende Felder}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Empfänger} other {# Empfänger}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, one {Seite {1} von {2} - # Feld gefunden} other {Seite {3} von {4} - # Felder gefunden}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, one {Seite {1} von {2} - # Empfänger gefunden} other {Seite {3} von {4} - # Empfänger gefunden}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, one {Empfänger hinzugefügt} other {Empfänger hinzugefügt}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Warte auf 1 Empfänger} other {Warte auf # Empfänger}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, one {Wir haben # Feld in Ihrem Dokument gefunden.} other {Wir haben # Felder in Ihrem Dokument gefunden.}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, one {Wir haben # Empfänger in Ihrem Dokument gefunden.} other {Wir haben # Empfänger in Ihrem Dokument gefunden.}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -200,11 +238,6 @@ msgstr "{0} von {1} Dokumenten verbleibend in diesem Monat."
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}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr ""
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -279,7 +312,7 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {Sie können nicht mehr als # Zugangsschl
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}"
-msgstr ""
+msgstr "{maximumEnvelopeItemCount, plural, one {Sie können nicht mehr als # Element pro Umschlag hochladen.} other {Sie können nicht mehr als # Elemente pro Umschlag hochladen.}}"
#: packages/lib/utils/document-audit-logs.ts
msgid "{prefix} added a field"
@@ -514,39 +547,39 @@ msgstr "<0>{organisationName}0> hat angefragt, Ihr bestehendes Documenso-Konto
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> hat Sie eingeladen, dieses Dokument zu genehmigen"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> hat Sie eingeladen, bei diesem Dokument mitzuwirken"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> hat Sie eingeladen, dieses Dokument zu unterschreiben"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> hat Sie eingeladen, dieses Dokument anzusehen"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> im Namen von \"{0}\" hat Sie eingeladen, dieses Dokument zu genehmigen"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> im Namen von \"{0}\" hat Sie eingeladen, bei diesem Dokument mitzuwirken"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> im Namen von \"{0}\" hat Sie eingeladen, dieses Dokument zu unterschreiben"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> im Namen von \"{0}\" hat Sie eingeladen, dieses Dokument anzusehen"
#: packages/email/templates/confirm-team-email.tsx
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
@@ -558,7 +591,7 @@ msgstr "<0>Konto verwalten:0> Ändern Sie Ihre Kontoeinstellungen, Berechtigun
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Admins only0> - Only admins can access and view the document"
-msgstr ""
+msgstr "<0>Nur Admins0> – Nur Admins können auf das Dokument zugreifen und es ansehen"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Data access:0> Access all data associated with your account"
@@ -579,7 +612,7 @@ msgstr "<0>Ereignisse:0> Alle"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Everyone0> - Everyone can access and view the document"
-msgstr ""
+msgstr "<0>Jede Person0> – Jede Person kann auf das Dokument zugreifen und es ansehen"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Full account access:0> View all your profile information, settings, and activity"
@@ -591,7 +624,7 @@ msgstr "<0>Authentifizierungsmethode erben0> - Verwenden Sie die in den \"Allg
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Managers and above0> - Only managers and above can access and view the document"
-msgstr ""
+msgstr "<0>Manager und höher0> – Nur Manager und Personen darüber können auf das Dokument zugreifen und es ansehen."
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "<0>No restrictions0> - No authentication required"
@@ -851,9 +884,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "Eine Anfrage zur Verwendung Ihrer E-Mail wurde von {0} auf Documenso initiiert"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "Ein Geheimnis, das an deine URL gesendet wird, damit du überprüfen kannst, dass die Anfrage von Documenso gesendet wurde"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Ein Geheimnis, das an deine URL gesendet wird, damit du überprüfen kannst, dass die Anfrage von Documenso gesendet wurde."
@@ -951,11 +981,11 @@ msgstr "Konto aktiviert"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account link declined"
-msgstr ""
+msgstr "Kontoverknüpfung abgelehnt"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account linked successfully"
-msgstr ""
+msgstr "Konto erfolgreich verknüpft"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account Linking Request"
@@ -1017,7 +1047,7 @@ msgstr "Aktiv"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Active"
-msgstr ""
+msgstr "Aktiv"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -1114,7 +1144,7 @@ msgstr "E-Mail-Domain hinzufügen"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Add fields"
-msgstr ""
+msgstr "Felder hinzufügen"
#: apps/remix/app/components/general/document/document-edit-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
@@ -1182,7 +1212,7 @@ msgstr "Platzhalter hinzufügen"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Add recipients"
-msgstr ""
+msgstr "Empfänger hinzufügen"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Add Recipients"
@@ -1286,7 +1316,11 @@ msgstr "Nach der Übermittlung wird ein Dokument automatisch generiert und zu Ih
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "AI Features"
-msgstr ""
+msgstr "KI‑Funktionen"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "KI-Funktionen sind für Ihr Team deaktiviert. Bitte bitten Sie den Teambesitzer oder den Organisationsbesitzer, sie zu aktivieren."
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -1384,7 +1418,7 @@ msgstr "Erlaubt die Authentifizierung mit biometrischen Daten, Passwort-Managern
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Almost done"
-msgstr ""
+msgstr "Fast fertig"
#: apps/remix/app/components/forms/signup.tsx
msgid "Already have an account? <0>Sign in instead0>"
@@ -1478,7 +1512,7 @@ msgstr "Beim automatischen Signieren des Dokuments ist ein Fehler aufgetreten, e
#: apps/remix/app/components/general/document-signing/document-signing-form.tsx
msgid "An error occurred while completing the document. Please try again."
-msgstr ""
+msgstr "Beim Abschließen des Dokuments ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "An error occurred while creating document from template."
@@ -1526,7 +1560,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Vorlage verschoben wurde."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "An error occurred while rejecting the document. Please try again."
-msgstr ""
+msgstr "Beim Ablehnen des Dokuments ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut."
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
#: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx
@@ -1692,11 +1726,11 @@ msgstr "Ein unbekannter Fehler ist beim Verschieben des Ordners aufgetreten."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Analyzing page layout"
-msgstr ""
+msgstr "Seitenlayout wird analysiert"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Analyzing pages"
-msgstr ""
+msgstr "Seiten werden analysiert"
#: apps/remix/app/routes/_authenticated+/inbox.tsx
msgid "Any documents that you have been invited to will appear here"
@@ -2265,6 +2299,10 @@ msgstr "Diagramme"
msgid "Checkbox"
msgstr "Kontrollkästchen"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "Checkbox-Option"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "Einstellungen für das Kontrollkästchen"
@@ -2368,6 +2406,7 @@ msgstr "Kundengeheimnis"
msgid "Client secret is required"
msgstr "Kundengeheimnis erforderlich"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2380,7 +2419,6 @@ msgstr "Kundengeheimnis erforderlich"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2391,7 +2429,9 @@ msgstr "Kundengeheimnis erforderlich"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "Schließen"
@@ -2584,7 +2624,7 @@ msgstr "Inhalt"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Context"
-msgstr ""
+msgstr "Kontext"
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
@@ -2667,13 +2707,13 @@ msgstr "Kopiert"
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field"
-msgstr ""
+msgstr "Kopiertes Feld"
#: apps/remix/app/components/embed/authoring/configure-fields-view.tsx
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field to clipboard"
-msgstr ""
+msgstr "Feld in die Zwischenablage kopiert"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
@@ -3020,7 +3060,7 @@ msgstr "Datumseinstellungen"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "David is the Employee, Lucas is the Manager"
-msgstr ""
+msgstr "David ist der Mitarbeiter, Lucas ist der Manager"
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -3069,6 +3109,10 @@ msgstr "Standard-Zeitzone"
msgid "Default Value"
msgstr "Standardwert"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "löschen"
@@ -3234,48 +3278,48 @@ msgstr "Einzelheiten"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect"
-msgstr ""
+msgstr "Erkennen"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detect fields"
-msgstr ""
+msgstr "Felder erkennen"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect recipients"
-msgstr ""
+msgstr "Empfänger erkennen"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
msgid "Detect recipients with AI"
-msgstr ""
+msgstr "Empfänger mit KI erkennen"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Detect with AI"
-msgstr ""
+msgstr "Mit KI erkennen"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detected fields"
-msgstr ""
+msgstr "Erkannte Felder"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detected recipients"
-msgstr ""
+msgstr "Erkannte Empfänger"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting fields"
-msgstr ""
+msgstr "Felder werden erkannt"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detecting recipients"
-msgstr ""
+msgstr "Empfänger werden erkannt"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting signature areas"
-msgstr ""
+msgstr "Signaturbereiche werden erkannt"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detection failed"
-msgstr ""
+msgstr "Erkennung fehlgeschlagen"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Developer Mode"
@@ -3288,8 +3332,8 @@ msgid "Device"
msgstr "Gerät"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "Hast du keinen Passwortwechsel angefordert? Wir helfen dir, dein Konto abzusichern, kontaktiere uns einfach <0>hier.0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr "Du hast keine Passwortänderung angefordert? Wir helfen dir, dein Konto zu sichern, kontaktiere uns einfach <0>hier0>."
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3632,6 +3676,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "Dokument geöffnet"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "Dokument ausstehend"
@@ -3830,6 +3879,11 @@ msgstr "Domain-Name"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Haben Sie kein Konto? <0>Registrieren0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "Nicht übertragen (alle Dokumente löschen)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3968,6 +4022,7 @@ msgstr "Z. B. 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4184,9 +4239,18 @@ msgstr "Konto aktivieren"
msgid "Enable Account"
msgstr "Konto Aktivieren"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "KI-Erkennung aktivieren"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "KI-Funktionen aktivieren"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
-msgstr ""
+msgstr "Aktivieren Sie KI‑gestützte Funktionen wie die automatische Empfängererkennung. Wenn diese Option aktiviert ist, werden die Dokumentinhalte an KI‑Anbieter gesendet. Wir verwenden nur Anbieter, die Daten nicht zu Trainingszwecken speichern, und bevorzugen – sofern verfügbar – Standorte in Europa."
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
msgid "Enable Authenticator App"
@@ -4224,6 +4288,10 @@ msgstr "Aktiviere die Signaturreihenfolge"
msgid "Enable SSO portal"
msgstr "SSO-Portal aktivieren"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4422,11 +4490,11 @@ msgstr "Fehler"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error declining account link"
-msgstr ""
+msgstr "Fehler beim Ablehnen der Kontoverknüpfung"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error linking account"
-msgstr ""
+msgstr "Fehler beim Verknüpfen des Kontos"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "Error uploading file"
@@ -4484,7 +4552,7 @@ msgstr "Externe ID"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Extracting contact details"
-msgstr ""
+msgstr "Kontaktdaten werden extrahiert"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -4493,7 +4561,7 @@ msgstr "Fehlgeschlagen"
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
msgid "Failed to complete the document. Please try again."
-msgstr ""
+msgstr "Das Dokument konnte nicht abgeschlossen werden. Bitte versuchen Sie es erneut."
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Failed to create folder"
@@ -4565,7 +4633,7 @@ msgstr "Webhook konnte nicht aktualisiert werden"
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
msgid "Failed to upload CSV. Please check the file format and try again."
-msgstr ""
+msgstr "CSV konnte nicht hochgeladen werden. Bitte überprüfen Sie das Dateiformat und versuchen Sie es erneut."
#: packages/email/templates/bulk-send-complete.tsx
msgid "Failed: {failedCount}"
@@ -4725,13 +4793,13 @@ msgstr "Hast du dein Passwort vergessen?"
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
msgctxt "Plan price"
msgid "Free"
-msgstr ""
+msgstr "Kostenlos"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Free"
-msgstr ""
+msgstr "Kostenlos"
#: packages/lib/utils/fields.ts
#: packages/ui/primitives/document-flow/types.ts
@@ -4822,10 +4890,26 @@ msgstr "Nach Hause gehen"
msgid "Go to document"
msgstr "Zum Dokument gehen"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "Zur ersten Seite gehen"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "Zur letzten Seite gehen"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "Zur nächsten Seite gehen"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "Zum Eigentümer gehen"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "Zur vorherigen Seite gehen"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "Zum Team gehen"
@@ -4883,7 +4967,7 @@ msgstr "Hilfe beim Abschließen des Dokuments für andere Unterzeichner."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Help the AI assign fields to the right recipients."
-msgstr ""
+msgstr "Helfen Sie der KI, die Felder den richtigen Empfängern zuzuordnen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains._index.tsx
msgid "Here you can add email domains to your organisation."
@@ -4906,8 +4990,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "Hier können Sie Branding-Präferenzen für Ihre Organisation festlegen. Teams werden diese Einstellungen standardmäßig übernehmen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "Hier können Sie Branding-Präferenzen für Ihr Team festlegen"
+msgid "Here you can set branding preferences for your team."
+msgstr "Hier kannst du die Branding-Einstellungen für dein Team festlegen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4922,12 +5006,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "Hier können Sie Präferenzen und Voreinstellungen für Ihr Team festlegen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "Hier können Sie Ihre allgemeinen Branding-Präferenzen festlegen"
+msgid "Here you can set your general branding preferences."
+msgstr "Hier kannst du deine allgemeinen Branding-Einstellungen festlegen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "Hier können Sie Ihre allgemeinen Dokumentpräferenzen festlegen"
+msgid "Here you can set your general document preferences."
+msgstr "Hier kannst du deine allgemeinen Dokumenteinstellungen festlegen."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5020,11 +5104,11 @@ msgstr "ID in die Zwischenablage kopiert"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Identifying input fields"
-msgstr ""
+msgstr "Eingabefelder werden identifiziert"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Identifying recipients"
-msgstr ""
+msgstr "Empfänger werden identifiziert"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
msgid "If there is any issue with your subscription, please contact us at <0>{SUPPORT_EMAIL}0>."
@@ -5053,7 +5137,7 @@ msgstr "Wichtig: Was dies bedeutet"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Inactive"
-msgstr ""
+msgstr "Inaktiv"
#: apps/remix/app/components/general/app-nav-mobile.tsx
#: apps/remix/app/components/general/app-nav-mobile.tsx
@@ -5092,6 +5176,7 @@ msgstr "Authentifizierungsmethode erben"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5477,13 +5562,14 @@ msgstr "Protokolle"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Looking for form fields"
-msgstr ""
+msgstr "Formularfelder werden gesucht"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Looking for signature fields"
-msgstr ""
+msgstr "Signaturfelder werden gesucht"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5544,6 +5630,10 @@ msgstr "Verknüpfte Konten verwalten"
msgid "Manage organisation"
msgstr "Organisation verwalten"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "Organisationen verwalten"
@@ -5636,7 +5726,7 @@ msgstr "Manager und höher"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Mapping fields to recipients"
-msgstr ""
+msgstr "Felder werden Empfängern zugeordnet"
#: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx
msgid "Mark as viewed"
@@ -5707,15 +5797,15 @@ msgstr "Mitglied seit"
msgid "Members"
msgstr "Mitglieder"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "Nachricht"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "Nachricht <0>(Optional)0>"
@@ -5865,10 +5955,6 @@ msgstr "Nie ablaufen"
msgid "New Password"
msgstr "Neues Passwort"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "Neue Vorlage"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5894,6 +5980,7 @@ msgstr "Nächster Empfängername"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "Nein"
@@ -5909,11 +5996,11 @@ msgstr "Keine Dokumente gefunden"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No email detected"
-msgstr ""
+msgstr "Keine E‑Mail erkannt"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "No fields were detected in your document."
-msgstr ""
+msgstr "In Ihrem Dokument wurden keine Felder erkannt."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
@@ -5961,7 +6048,7 @@ msgstr "Keine Empfänger"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No recipients were detected in your document."
-msgstr ""
+msgstr "In Ihrem Dokument wurden keine Empfänger erkannt."
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
#: packages/ui/primitives/recipient-selector.tsx
@@ -6101,8 +6188,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "Sobald Sie den QR-Code gescannt oder den Code manuell eingegeben haben, geben Sie den von Ihrer Authentifizierungs-App bereitgestellten Code unten ein."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "Sobald Sie Ihre DNS-Datensätze aktualisieren, kann es bis zu 48 Stunden dauern, bis sie propagiert werden. Sobald die DNS-Propagation abgeschlossen ist, müssen Sie zurückkommen und den \"Sync\"-Domains-Button drücken."
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "Nachdem du deine DNS-Einträge aktualisiert hast, kann es bis zu 48 Stunden dauern, bis sie verbreitet sind. Sobald die DNS-Propagation abgeschlossen ist, musst du zurückkehren und die Schaltfläche \"Domains synchronisieren\" drücken."
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6136,6 +6223,10 @@ msgstr "Nur PDF-Dateien sind erlaubt"
msgid "Oops! Something went wrong."
msgstr "Hoppla! Etwas ist schief gelaufen."
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "Menü öffnen"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "Geöffnet"
@@ -6329,20 +6420,6 @@ msgstr "Eigentumsrechte wurden an {organisationMemberName} übertragen."
msgid "Page {0} of {1}"
msgstr "Seite {0} von {1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr ""
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr ""
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6352,7 +6429,7 @@ msgstr "Seite {0} von {numPages}"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
msgctxt "Subscription status"
msgid "Paid"
-msgstr ""
+msgstr "Bezahlt"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
@@ -6434,7 +6511,7 @@ msgstr "Passwort aktualisiert!"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Past Due"
-msgstr ""
+msgstr "Überfällig"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
@@ -6688,10 +6765,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/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "Bitte versuchen Sie es später noch einmal."
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6873,7 +6946,7 @@ msgstr "Lesen Sie die vollständige <0>Offenlegung der Unterschrift0>."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Reading your document"
-msgstr ""
+msgstr "Ihr Dokument wird gelesen"
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
msgid "Ready"
@@ -6936,7 +7009,7 @@ msgstr "Empfänger"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
msgid "Recipient {0}"
-msgstr ""
+msgstr "Empfänger {0}"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/components/recipient/recipient-action-auth-select.tsx
@@ -6969,10 +7042,6 @@ msgstr "Empfänger aktualisiert"
msgid "Recipients"
msgstr "Empfänger"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr ""
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "Empfängermetriken"
@@ -7122,7 +7191,7 @@ msgstr "Organisationsmitglied entfernen"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
-msgstr ""
+msgstr "Empfänger entfernen"
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
msgid "Remove team email"
@@ -7146,8 +7215,8 @@ msgstr "Auf E-Mail antworten"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "Antworten auf E-Mail"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "Antwort an E-Mail-Adresse <0>(Optional)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7284,6 +7353,11 @@ msgstr "Wiederholen"
msgid "Return"
msgstr "Zurück"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "Hier zur Documenso-Anmeldeseite zurückkehren"
@@ -7450,6 +7524,7 @@ msgid "See the background jobs tab for the status"
msgstr "Der Status kann im Hintergrundjobs-Tab eingesehen werden"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8071,7 +8146,7 @@ msgstr "Website Einstellungen"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Skip"
-msgstr ""
+msgstr "Überspringen"
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -8089,7 +8164,6 @@ msgstr "Einige Unterzeichner haben noch kein Unterschriftsfeld zugewiesen bekomm
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8134,11 +8208,11 @@ msgstr "Etwas ist schiefgelaufen beim Versuch, Ihre E-Mail-Adresse für <0>{0}
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Something went wrong while detecting fields."
-msgstr ""
+msgstr "Bei der Felderkennung ist ein Fehler aufgetreten."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Something went wrong while detecting recipients."
-msgstr ""
+msgstr "Bei der Empfängererkennung ist ein Fehler aufgetreten."
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
@@ -8252,14 +8326,14 @@ msgstr "Stripe-Kunde erfolgreich erstellt"
msgid "Stripe Customer ID"
msgstr "Stripe-Kunden-ID"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "Betreff"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "Betreff <0>(Optional)0>"
@@ -8580,7 +8654,6 @@ 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)"
@@ -8593,7 +8666,7 @@ msgstr "Vorlage erstellt"
msgid "Template deleted"
msgstr "Vorlage gelöscht"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "Vorlagendokument hochgeladen"
@@ -8655,10 +8728,6 @@ msgstr "Vorlage hochgeladen"
msgid "Templates"
msgstr "Vorlagen"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "Vorlagen erlauben dir das schnelle Erstlelen von Dokumenten mit vorausgefüllten Empfängern und Feldern."
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "Test"
@@ -8765,7 +8834,7 @@ msgstr "Der Anzeigename für diese E-Mail-Adresse"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
-msgstr ""
+msgstr "Das Dokument wurde erfolgreich gelöscht."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
msgid "The document has been moved successfully."
@@ -8773,7 +8842,7 @@ msgstr "Das Dokument wurde erfolgreich verschoben."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "The document has been successfully rejected."
-msgstr ""
+msgstr "Das Dokument wurde erfolgreich abgelehnt."
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "The document is already saved and cannot be changed."
@@ -8792,6 +8861,12 @@ msgstr "Der Dokumenteninhaber wurde über diese Ablehnung informiert. Es sind de
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "Der Dokumenteneigentümer wurde über Ihre Entscheidung informiert. Er kann Sie bei Bedarf mit weiteren Anweisungen kontaktieren."
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "Das Dokument wurde erstellt, konnte aber nicht an die Empfänger versendet werden."
@@ -8826,8 +8901,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
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"
-msgstr "Die angegebene E-Mail oder das Passwort ist falsch"
+msgid "The email or password provided is incorrect."
+msgstr "Die angegebene E-Mail-Adresse oder das Passwort ist falsch."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -8860,7 +8935,7 @@ msgstr "Die folgenden Fehler sind aufgetreten:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following recipients require an email address:"
-msgstr ""
+msgstr "Für die folgenden Empfänger wird eine E‑Mail‑Adresse benötigt:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following signers are missing signature fields:"
@@ -9025,8 +9100,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "Der Token, den Sie zur Zurücksetzung Ihres Passworts verwendet haben, ist entweder abgelaufen oder hat nie existiert. Wenn Sie Ihr Passwort immer noch vergessen haben, fordern Sie bitte einen neuen Zurücksetzungslink an."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "Der bereitgestellte Code der Zwei-Faktor-Authentifizierung ist falsch"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr "Der angegebene Zwei-Faktor-Authentifizierungscode ist falsch."
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9051,7 +9126,7 @@ msgstr "Die Zwei-Faktor-Authentifizierung des Nutzers wurde erfolgreich zurückg
#: packages/ui/components/document/document-visibility-select.tsx
msgid "The visibility of the document to the recipient."
-msgstr ""
+msgstr "Die Sichtbarkeit des Dokuments für den Empfänger."
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
@@ -9122,7 +9197,7 @@ msgstr "Diese Aktion ist umkehrbar, jedoch bitte seien Sie vorsichtig, da das Ko
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "This can take a minute or two depending on the size of your document."
-msgstr ""
+msgstr "Je nach Größe Ihres Dokuments kann dies ein bis zwei Minuten dauern."
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
msgid "This claim is locked and cannot be deleted."
@@ -9196,8 +9271,8 @@ msgid "This document was created using a direct link."
msgstr "Dieses Dokument wurde mit einem direkten Link erstellt."
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
-msgstr "Dieses Dokument wurde mit <0>Documenso.0> gesendet"
+msgid "This document was sent using <0>Documenso0>."
+msgstr "Dieses Dokument wurde mit <0>Documenso0> versendet."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document will be duplicated."
@@ -9502,7 +9577,7 @@ msgstr "Token-Name"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Too many requests"
-msgstr ""
+msgstr "Zu viele Anfragen"
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
msgid "Top"
@@ -9528,6 +9603,10 @@ msgstr "Gesamtanzahl der Unterzeichner, die sich angemeldet haben"
msgid "Total Users"
msgstr "Gesamtanzahl der Benutzer"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "Dokumente auf ein anderes Team übertragen"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9538,7 +9617,11 @@ msgstr "Auslöser"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Try again"
-msgstr ""
+msgstr "Erneut versuchen"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "Aktivieren Sie die KI-Erkennung, um automatisch Empfänger und Felder in Ihren Dokumenten zu finden. KI-Anbieter behalten Ihre Daten nicht für Trainingszwecke."
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
@@ -9686,6 +9769,10 @@ msgstr "Nicht autorisiert"
msgid "Uncompleted"
msgstr "Unvollendet"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "Rückgängig"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -9704,7 +9791,7 @@ msgstr "Unbekannter Fehler"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Unknown name"
-msgstr ""
+msgstr "Unbekannter Name"
#: apps/remix/app/components/tables/admin-claims-table.tsx
msgid "Unlimited"
@@ -10298,8 +10385,8 @@ msgstr "Warten auf deine Reihe"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "Möchten Sie auffällige Signatur-Links wie diesen senden? <0>Überprüfen Sie Documenso.0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr "Möchtest du schicke Signatur-Links wie diesen versenden? <0>Sieh dir Documenso an0>."
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10334,6 +10421,10 @@ msgstr "Wir können diesen Schlüssel im Moment nicht aktualisieren. Bitte versu
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "Wir konnten keinen Stripe-Kunden erstellen. Bitte versuchen Sie es erneut."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "Wir konnten die KI-Funktionen gerade nicht aktivieren. Bitte versuchen Sie es erneut."
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "Wir konnten die Gruppe nicht aktualisieren. Bitte versuchen Sie es erneut."
@@ -10417,7 +10508,7 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "We encountered an unknown error while attempting to delete your document. Please try again later."
-msgstr ""
+msgstr "Beim Versuch, Ihr Dokument zu löschen, ist ein unbekannter Fehler aufgetreten. Bitte versuchen Sie es später erneut."
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
msgid "We encountered an unknown error while attempting to disable access."
@@ -10534,16 +10625,6 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "Wir haben einen unbekannten Fehler festgestellt, während wir versuchten, Ihr Profil zu aktualisieren. Bitte versuchen Sie es später noch einmal."
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr ""
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr ""
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "Wir haben eine Bestätigungs-E-Mail zur Überprüfung gesendet."
@@ -10637,11 +10718,11 @@ msgstr "Wir werden uns so schnell wie möglich per E-Mail bei Ihnen melden."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "We'll scan your document to find form fields like signature lines, text inputs, checkboxes, and more. Detected fields will be suggested for you to review."
-msgstr ""
+msgstr "Wir scannen Ihr Dokument, um Formularfelder wie Signaturzeilen, Texteingaben, Kontrollkästchen und mehr zu finden. Erkannte Felder werden Ihnen zur Überprüfung vorgeschlagen."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "We'll scan your document to find signature fields and identify who needs to sign. Detected recipients will be suggested for you to review."
-msgstr ""
+msgstr "Wir scannen Ihr Dokument, um Signaturfelder zu finden und zu ermitteln, wer unterschreiben muss. Erkannte Empfänger werden Ihnen zur Überprüfung vorgeschlagen."
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
msgid "We'll send a 6-digit code to your email"
@@ -10793,6 +10874,7 @@ msgstr "Jährlich"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "Ja"
@@ -10905,13 +10987,13 @@ msgid "You are currently updating <0>{0}0>"
msgstr "Sie aktualisieren derzeit <0>{0}0>"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
-msgstr "Sie aktualisieren derzeit <0>{memberName}.0>"
+msgid "You are currently updating <0>{memberName}0>."
+msgstr "Du bearbeitest aktuell <0>{memberName}0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
-msgstr "Sie aktualisieren derzeit <0>{organisationMemberName}.0>"
+msgid "You are currently updating <0>{organisationMemberName}0>."
+msgstr "Du bearbeitest aktuell <0>{organisationMemberName}0>."
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
msgid "You are currently updating the <0>{passkeyName}0> passkey."
@@ -10948,11 +11030,11 @@ msgstr "Sie sind nicht berechtigt, die Zwei-Faktor-Authentifizierung für diesen
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "You can add fields manually in the editor."
-msgstr ""
+msgstr "Sie können im Editor manuell Felder hinzufügen."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You can add recipients manually in the editor."
-msgstr ""
+msgstr "Sie können im Editor manuell Empfänger hinzufügen."
#: packages/email/template-components/template-confirmation-email.tsx
msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
@@ -10972,16 +11054,16 @@ msgstr "Sie können den Zugriff so aktivieren, dass alle Organisationsmitglieder
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "Hier können Sie Ihre E-Mail-Präferenzen verwalten"
+msgid "You can manage your email preferences here."
+msgstr "Du kannst deine E-Mail-Einstellungen hier verwalten."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
-msgstr ""
+msgstr "Sie können Felder nur in Entwürfen von Umschlägen erkennen."
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "Sie können den Zugriff jederzeit in Ihren Teameinstellungen auf Documenso <0>hier.0> widerrufen"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr "Sie können den Zugriff jederzeit in Ihren Teameinstellungen auf Documenso <0>hier0> widerrufen."
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11014,8 +11096,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "Sie können keine Gruppe löschen, die eine höhere Rolle hat als Sie."
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-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"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr "Du kannst dieses Element nicht löschen, weil das Dokument bereits an Empfänger gesendet wurde."
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11041,8 +11123,8 @@ msgstr "Sie können derzeit keine Dokumente hochladen."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "Sie können keine verschlüsselten PDFs hochladen"
+msgid "You cannot upload encrypted PDFs."
+msgstr "Du kannst keine verschlüsselten PDFs hochladen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11053,8 +11135,8 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "Derzeit haben Sie keinen Zugriff auf Teams in dieser Organisation. Bitte kontaktieren Sie Ihre Organisation, um Zugriff zu erhalten."
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
-msgstr "Sie haben keine Berechtigung, ein Token für dieses Team zu erstellen"
+msgid "You do not have permission to create a token for this team."
+msgstr "Sie haben keine Berechtigung, ein Token für dieses Team zu erstellen."
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgid "You don't manage billing for any organisations."
@@ -11123,8 +11205,8 @@ msgstr "Sie haben noch keine Dokumente erstellt oder erhalten. Bitte laden Sie e
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.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"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr "Sie haben die maximale Anzahl von Dateien pro Umschlag erreicht."
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11279,10 +11361,14 @@ msgstr "Sie müssen bei der Anmeldung jetzt einen Code von Ihrer Authenticator-A
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "Sie erhalten eine Kopie des unterschriebenen Dokuments per E-Mail, sobald alle unterschrieben haben."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "Sie sind Administrator. Sie können die KI-Funktionen für dieses Team sofort aktivieren. Alle im Team sehen die KI-Erkennung, sobald sie aktiviert ist."
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
-msgstr ""
+msgstr "Sie haben zu viele Erkennungsanfragen gestellt. Bitte warten Sie eine Minute, bevor Sie es erneut versuchen."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Your Account"
@@ -11337,6 +11423,10 @@ msgstr "Ihr aktueller Plan ist überfällig."
msgid "Your direct signing templates"
msgstr "Ihre direkten Unterzeichnungsvorlagen"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "Der Inhalt Ihres Dokuments wird ausschließlich zum Zweck der Erkennung sicher an unseren KI-Anbieter gesendet und weder gespeichert noch für Trainingszwecke verwendet."
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11372,14 +11462,14 @@ msgstr "Ihr Dokument wurde erfolgreich dupliziert."
msgid "Your document has been uploaded successfully."
msgstr "Ihr Dokument wurde erfolgreich hochgeladen."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Ihr Dokument wurde erfolgreich hochgeladen. Sie werden zur Vorlagenseite weitergeleitet."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Your document is processed securely using AI services that don't retain your data."
-msgstr ""
+msgstr "Ihr Dokument wird sicher mit KI‑Diensten verarbeitet, die Ihre Daten nicht speichern."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
diff --git a/packages/lib/translations/en/web.po b/packages/lib/translations/en/web.po
index 69a6279dd..75f5eb80b 100644
--- a/packages/lib/translations/en/web.po
+++ b/packages/lib/translations/en/web.po
@@ -96,6 +96,11 @@ msgstr "{0, plural, one {# field} other {# fields}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, one {# folder} other {# folders}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -146,11 +151,44 @@ msgstr "{0, plural, one {1 matching field} other {# matching fields}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Recipient} other {# Recipients}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, one {Recipient added} other {Recipients added}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -195,11 +233,6 @@ msgstr "{0} of {1} documents remaining this month."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr "{0} recipient(s) have been added from AI detection."
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -846,9 +879,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "A request to use your email has been initiated by {0} on Documenso"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
@@ -1283,6 +1313,10 @@ msgstr "After submission, a document will be automatically generated and added t
msgid "AI Features"
msgstr "AI Features"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "All"
@@ -2260,6 +2294,10 @@ msgstr "Charts"
msgid "Checkbox"
msgstr "Checkbox"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "Checkbox option"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "Checkbox Settings"
@@ -2363,6 +2401,7 @@ msgstr "Client Secret"
msgid "Client secret is required"
msgstr "Client secret is required"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2375,7 +2414,6 @@ msgstr "Client secret is required"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2386,7 +2424,9 @@ msgstr "Client secret is required"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "Close"
@@ -3064,6 +3104,10 @@ msgstr "Default Time Zone"
msgid "Default Value"
msgstr "Default Value"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr "Delegate Document Ownership"
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "delete"
@@ -3283,8 +3327,8 @@ msgid "Device"
msgstr "Device"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3627,6 +3671,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "Document opened"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr "Document ownership delegated"
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "Document pending"
@@ -3825,6 +3874,11 @@ msgstr "Domain Name"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Don't have an account? <0>Sign up0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "Don't transfer (Delete all documents)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3963,6 +4017,7 @@ msgstr "E.g. 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4179,6 +4234,15 @@ msgstr "Enable account"
msgid "Enable Account"
msgstr "Enable Account"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "Enable AI detection"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "Enable AI features"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
msgstr "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
@@ -4219,6 +4283,10 @@ msgstr "Enable signing order"
msgid "Enable SSO portal"
msgstr "Enable SSO portal"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr "Enable team API tokens to delegate document ownership to another team member."
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4817,10 +4885,26 @@ msgstr "Go home"
msgid "Go to document"
msgstr "Go to document"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "Go to first page"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "Go to last page"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "Go to next page"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "Go to owner"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "Go to previous page"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "Go to team"
@@ -4901,8 +4985,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "Here you can set branding preferences for your organisation. Teams will inherit these settings by default."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "Here you can set branding preferences for your team"
+msgid "Here you can set branding preferences for your team."
+msgstr "Here you can set branding preferences for your team."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4917,12 +5001,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "Here you can set preferences and defaults for your team."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "Here you can set your general branding preferences"
+msgid "Here you can set your general branding preferences."
+msgstr "Here you can set your general branding preferences."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "Here you can set your general document preferences"
+msgid "Here you can set your general document preferences."
+msgstr "Here you can set your general document preferences."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5087,6 +5171,7 @@ msgstr "Inherit authentication method"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5479,6 +5564,7 @@ msgid "Looking for signature fields"
msgstr "Looking for signature fields"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5539,6 +5625,10 @@ msgstr "Manage linked accounts"
msgid "Manage organisation"
msgstr "Manage organisation"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr "Manage Organisation"
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "Manage organisations"
@@ -5702,15 +5792,15 @@ msgstr "Member Since"
msgid "Members"
msgstr "Members"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "Message"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "Message <0>(Optional)0>"
@@ -5860,10 +5950,6 @@ msgstr "Never expire"
msgid "New Password"
msgstr "New Password"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "New Template"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5889,6 +5975,7 @@ msgstr "Next Recipient Name"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "No"
@@ -6096,8 +6183,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6131,6 +6218,10 @@ msgstr "Only PDF files are allowed"
msgid "Oops! Something went wrong."
msgstr "Oops! Something went wrong."
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "Open menu"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "Opened"
@@ -6324,20 +6415,6 @@ msgstr "Ownership transferred to {organisationMemberName}."
msgid "Page {0} of {1}"
msgstr "Page {0} of {1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr "Page {0} of {1} - {2} field(s) found"
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr "Page {0} of {1} - {2} recipient(s) found"
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6683,10 +6760,6 @@ msgstr "Please try a different domain."
msgid "Please try again and make sure you enter the correct email address."
msgstr "Please try again and make sure you enter the correct email address."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "Please try again later."
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6964,10 +7037,6 @@ msgstr "Recipient updated"
msgid "Recipients"
msgstr "Recipients"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr "Recipients added"
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "Recipients metrics"
@@ -7141,8 +7210,8 @@ msgstr "Reply to email"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "Reply To Email"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "Reply To Email <0>(Optional)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7279,6 +7348,11 @@ msgstr "Retry"
msgid "Return"
msgstr "Return"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr "Return Home"
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "Return to Documenso sign in page here"
@@ -7445,6 +7519,7 @@ msgid "See the background jobs tab for the status"
msgstr "See the background jobs tab for the status"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8084,7 +8159,6 @@ msgstr "Some signers have not been assigned a signature field. Please assign at
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8247,14 +8321,14 @@ msgstr "Stripe customer created successfully"
msgid "Stripe Customer ID"
msgstr "Stripe Customer ID"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "Subject"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "Subject <0>(Optional)0>"
@@ -8575,7 +8649,6 @@ msgstr "Teams that this organisation group is currently assigned to"
msgid "Template"
msgstr "Template"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: packages/ui/primitives/document-upload-button.tsx
msgid "Template (Legacy)"
msgstr "Template (Legacy)"
@@ -8588,7 +8661,7 @@ msgstr "Template Created"
msgid "Template deleted"
msgstr "Template deleted"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "Template document uploaded"
@@ -8650,10 +8723,6 @@ msgstr "Template uploaded"
msgid "Templates"
msgstr "Templates"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "Test"
@@ -8787,6 +8856,12 @@ msgstr "The document owner has been notified of this rejection. No further actio
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr "The document ownership was delegated to {0} on behalf of {1}"
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "The document was created but could not be sent to recipients."
@@ -8821,8 +8896,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
msgstr "The email domain you are looking for may have been removed, renamed or may have never existed."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The email or password provided is incorrect"
-msgstr "The email or password provided is incorrect"
+msgid "The email or password provided is incorrect."
+msgstr "The email or password provided is incorrect."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -9020,8 +9095,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "The token you have used to reset your password is either expired or it never existed. If you have still forgotten your password, please request a new reset link."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "The two-factor authentication code provided is incorrect"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr "The two-factor authentication code provided is incorrect."
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9191,8 +9266,8 @@ msgid "This document was created using a direct link."
msgstr "This document was created using a direct link."
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
-msgstr "This document was sent using <0>Documenso.0>"
+msgid "This document was sent using <0>Documenso0>."
+msgstr "This document was sent using <0>Documenso0>."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document will be duplicated."
@@ -9523,6 +9598,10 @@ msgstr "Total Signers that Signed Up"
msgid "Total Users"
msgstr "Total Users"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "Transfer documents to a different team"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9535,6 +9614,10 @@ msgstr "Triggers"
msgid "Try again"
msgstr "Try again"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
msgstr "Two factor authentication"
@@ -9681,6 +9764,10 @@ msgstr "Unauthorized"
msgid "Uncompleted"
msgstr "Uncompleted"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "Undo"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -10293,8 +10380,8 @@ msgstr "Waiting for Your Turn"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "Want to send slick signing links like this one? <0>Check out Documenso.0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr "Want to send slick signing links like this one? <0>Check out Documenso0>."
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10329,6 +10416,10 @@ msgstr "We are unable to update this passkey at the moment. Please try again lat
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "We couldn't create a Stripe customer. Please try again."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "We couldn't enable AI features right now. Please try again."
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "We couldn't update the group. Please try again."
@@ -10529,16 +10620,6 @@ msgstr "We encountered an unknown error while attempting update the team email.
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "We encountered an unknown error while attempting update your profile. Please try again later."
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr "We found {0} field(s) in your document."
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr "We found {0} recipient(s) in your document."
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "We have sent a confirmation email for verification."
@@ -10788,6 +10869,7 @@ msgstr "Yearly"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "Yes"
@@ -10900,13 +10982,13 @@ msgid "You are currently updating <0>{0}0>"
msgstr "You are currently updating <0>{0}0>"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
-msgstr "You are currently updating <0>{memberName}.0>"
+msgid "You are currently updating <0>{memberName}0>."
+msgstr "You are currently updating <0>{memberName}0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
-msgstr "You are currently updating <0>{organisationMemberName}.0>"
+msgid "You are currently updating <0>{organisationMemberName}0>."
+msgstr "You are currently updating <0>{organisationMemberName}0>."
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
msgid "You are currently updating the <0>{passkeyName}0> passkey."
@@ -10967,16 +11049,16 @@ msgstr "You can enable access to allow all organisation members to access this t
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "You can manage your email preferences here"
+msgid "You can manage your email preferences here."
+msgstr "You can manage your email preferences here."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
msgstr "You can only detect fields in draft envelopes"
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "You can revoke access at any time in your team settings on Documenso <0>here.0>"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr "You can revoke access at any time in your team settings on Documenso <0>here0>."
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11009,8 +11091,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "You cannot delete a group which has a higher role than you."
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-msgid "You cannot delete this item because the document has been sent to recipients"
-msgstr "You cannot delete this item because the document has been sent to recipients"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr "You cannot delete this item because the document has been sent to recipients."
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11036,8 +11118,8 @@ msgstr "You cannot upload documents at this time."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "You cannot upload encrypted PDFs"
+msgid "You cannot upload encrypted PDFs."
+msgstr "You cannot upload encrypted PDFs."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11048,8 +11130,8 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "You currently have no access to any teams within this organisation. Please contact your organisation to request access."
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
-msgstr "You do not have permission to create a token for this team"
+msgid "You do not have permission to create a token for this team."
+msgstr "You do not have permission to create a token for this team."
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgid "You don't manage billing for any organisations."
@@ -11118,8 +11200,8 @@ msgstr "You have not yet created or received any documents. To create a document
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You have reached the limit of the number of files per envelope"
-msgstr "You have reached the limit of the number of files per envelope"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr "You have reached the limit of the number of files per envelope."
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11274,6 +11356,10 @@ msgstr "You will now be required to enter a code from your authenticator app whe
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "You will receive an email copy of the signed document once everyone has signed."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
@@ -11332,6 +11418,10 @@ msgstr "Your current plan is past due."
msgid "Your direct signing templates"
msgstr "Your direct signing templates"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11367,7 +11457,7 @@ msgstr "Your document has been successfully duplicated."
msgid "Your document has been uploaded successfully."
msgstr "Your document has been uploaded successfully."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Your document has been uploaded successfully. You will be redirected to the template page."
diff --git a/packages/lib/translations/es/web.po b/packages/lib/translations/es/web.po
index aec57d06e..97cfd4a25 100644
--- a/packages/lib/translations/es/web.po
+++ b/packages/lib/translations/es/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: es\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2025-11-27 05:32\n"
+"PO-Revision-Date: 2025-12-15 02:39\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -68,7 +68,7 @@ msgstr "{0, plural, one {(1 carácter excedido)} other {(# caracteres excedidos)
#. placeholder {2}: table.getFilteredSelectedRowModel().rows.length
#: packages/ui/primitives/data-table-pagination.tsx
msgid "{0, plural, one {{1} of # row selected.} other {{2} of # rows selected.}}"
-msgstr ""
+msgstr "{0, plural, one {{1} de # fila seleccionada.} other {{2} de # filas seleccionadas.}}"
#. placeholder {0}: Math.abs(remaningLength)
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
@@ -101,6 +101,11 @@ msgstr "{0, plural, one {# campo} other {# campos}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, one {# carpeta} other {# carpetas}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, one {Se ha añadido # destinatario a partir de la detección por IA.} other {Se han añadido # destinatarios a partir de la detección por IA.}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -151,11 +156,44 @@ msgstr "{0, plural, one {1 campo que coincide} other {# campos que coinciden}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Destinatario} other {# Destinatarios}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, one {Página {1} de {2} - se ha encontrado # campo} other {Página {3} de {4} - se han encontrado # campos}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, one {Página {1} de {2} - se ha encontrado # destinatario} other {Página {3} de {4} - se han encontrado # destinatarios}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, one {Destinatario añadido} other {Destinatarios añadidos}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Esperando 1 destinatario} other {Esperando # destinatarios}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, one {Hemos encontrado # campo en tu documento.} other {Hemos encontrado # campos en tu documento.}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, one {Hemos encontrado # destinatario en tu documento.} other {Hemos encontrado # destinatarios en tu documento.}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -200,11 +238,6 @@ msgstr "{0} de {1} documentos restantes este mes."
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}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr ""
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -279,7 +312,7 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {No puedes tener más de # clave de acces
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}"
-msgstr ""
+msgstr "{maximumEnvelopeItemCount, plural, one {No puedes subir más de # elemento por sobre.} other {No puedes subir más de # elementos por sobre.}}"
#: packages/lib/utils/document-audit-logs.ts
msgid "{prefix} added a field"
@@ -514,39 +547,39 @@ msgstr "<0>{organisationName}0> ha solicitado vincular tu cuenta actual de Doc
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> te ha invitado a aprobar este documento"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> te ha invitado a asistir en este documento"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> te ha invitado a firmar este documento"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> te ha invitado a ver este documento"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, en nombre de \"{0}\", te ha invitado a aprobar este documento"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, en nombre de \"{0}\", te ha invitado a asistir en este documento"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, en nombre de \"{0}\", te ha invitado a firmar este documento"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, en nombre de \"{0}\", te ha invitado a ver este documento"
#: packages/email/templates/confirm-team-email.tsx
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
@@ -558,7 +591,7 @@ msgstr "<0>Administración de cuenta:0> Modifica la configuración, permisos y
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Admins only0> - Only admins can access and view the document"
-msgstr ""
+msgstr "<0>Solo administradores0> - Solo los administradores pueden acceder y ver el documento"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Data access:0> Access all data associated with your account"
@@ -579,7 +612,7 @@ msgstr "<0>Eventos:0> Todos"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Everyone0> - Everyone can access and view the document"
-msgstr ""
+msgstr "<0>Todos0> - Todos pueden acceder y ver el documento"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Full account access:0> View all your profile information, settings, and activity"
@@ -591,7 +624,7 @@ msgstr "<0>Heredar método de autenticación0> - Use el método de autenticaci
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Managers and above0> - Only managers and above can access and view the document"
-msgstr ""
+msgstr "<0>Gerentes y superiores0> - Solo los gerentes y superiores pueden acceder y ver el documento"
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "<0>No restrictions0> - No authentication required"
@@ -851,9 +884,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "Se ha iniciado una solicitud para usar tu correo electrónico por {0} en Documenso"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "Un secreto que se enviará a tu URL para que puedas verificar que la solicitud ha sido enviada por Documenso"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Un secreto que se enviará a tu URL para que puedas verificar que la solicitud ha sido enviada por Documenso."
@@ -951,11 +981,11 @@ msgstr "Cuenta habilitada"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account link declined"
-msgstr ""
+msgstr "Enlace de cuenta rechazado"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account linked successfully"
-msgstr ""
+msgstr "Cuenta vinculada correctamente"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account Linking Request"
@@ -1017,7 +1047,7 @@ msgstr "Activo"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Active"
-msgstr ""
+msgstr "Activa"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -1114,7 +1144,7 @@ msgstr "Agregar dominio de correo electrónico"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Add fields"
-msgstr ""
+msgstr "Agregar campos"
#: apps/remix/app/components/general/document/document-edit-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
@@ -1182,7 +1212,7 @@ msgstr "Agregar Marcadores de posición"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Add recipients"
-msgstr ""
+msgstr "Agregar destinatarios"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Add Recipients"
@@ -1286,7 +1316,11 @@ msgstr "Después de la presentación, se generará automáticamente un documento
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "AI Features"
-msgstr ""
+msgstr "Funciones de IA"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "Las funciones de IA están desactivadas para tu equipo. Pide a la persona propietaria del equipo u organización que las habilite."
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -1384,7 +1418,7 @@ msgstr "Permite autenticarse usando biometría, administradores de contraseñas,
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Almost done"
-msgstr ""
+msgstr "Casi listo"
#: apps/remix/app/components/forms/signup.tsx
msgid "Already have an account? <0>Sign in instead0>"
@@ -1478,7 +1512,7 @@ msgstr "Se produjo un error al firmar automáticamente el documento, es posible
#: apps/remix/app/components/general/document-signing/document-signing-form.tsx
msgid "An error occurred while completing the document. Please try again."
-msgstr ""
+msgstr "Se produjo un error al completar el documento. Inténtalo de nuevo."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "An error occurred while creating document from template."
@@ -1526,7 +1560,7 @@ msgstr "Ocurrió un error al mover la plantilla."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "An error occurred while rejecting the document. Please try again."
-msgstr ""
+msgstr "Se produjo un error al rechazar el documento. Inténtalo de nuevo."
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
#: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx
@@ -1692,11 +1726,11 @@ msgstr "Se produjo un error desconocido al mover la carpeta."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Analyzing page layout"
-msgstr ""
+msgstr "Analizando el diseño de la página"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Analyzing pages"
-msgstr ""
+msgstr "Analizando las páginas"
#: apps/remix/app/routes/_authenticated+/inbox.tsx
msgid "Any documents that you have been invited to will appear here"
@@ -2265,6 +2299,10 @@ msgstr "Gráficas"
msgid "Checkbox"
msgstr "Casilla de verificación"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "Opción de casilla de verificación"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "Configuración de Checkbox"
@@ -2368,6 +2406,7 @@ msgstr "Secreto del Cliente"
msgid "Client secret is required"
msgstr "Se requiere secreto del cliente"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2380,7 +2419,6 @@ msgstr "Se requiere secreto del cliente"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2391,7 +2429,9 @@ msgstr "Se requiere secreto del cliente"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "Cerrar"
@@ -2584,7 +2624,7 @@ msgstr "Contenido"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Context"
-msgstr ""
+msgstr "Contexto"
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
@@ -2667,13 +2707,13 @@ msgstr "Copiado"
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field"
-msgstr ""
+msgstr "Campo copiado"
#: apps/remix/app/components/embed/authoring/configure-fields-view.tsx
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field to clipboard"
-msgstr ""
+msgstr "Campo copiado al portapapeles"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
@@ -3020,7 +3060,7 @@ msgstr "Configuración de Fecha"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "David is the Employee, Lucas is the Manager"
-msgstr ""
+msgstr "David es el empleado, Lucas es el gerente"
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -3069,6 +3109,10 @@ msgstr "Zona horaria predeterminada"
msgid "Default Value"
msgstr "Valor Predeterminado"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "eliminar"
@@ -3234,48 +3278,48 @@ msgstr "Detalles"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect"
-msgstr ""
+msgstr "Detectar"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detect fields"
-msgstr ""
+msgstr "Detectar campos"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect recipients"
-msgstr ""
+msgstr "Detectar destinatarios"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
msgid "Detect recipients with AI"
-msgstr ""
+msgstr "Detectar destinatarios con IA"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Detect with AI"
-msgstr ""
+msgstr "Detectar con IA"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detected fields"
-msgstr ""
+msgstr "Campos detectados"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detected recipients"
-msgstr ""
+msgstr "Destinatarios detectados"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting fields"
-msgstr ""
+msgstr "Detectando campos"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detecting recipients"
-msgstr ""
+msgstr "Detectando destinatarios"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting signature areas"
-msgstr ""
+msgstr "Detectando áreas de firma"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detection failed"
-msgstr ""
+msgstr "La detección ha fallado"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Developer Mode"
@@ -3288,8 +3332,8 @@ msgid "Device"
msgstr "Dispositivo"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "¿No solicitaste un cambio de contraseña? Estamos aquí para ayudarte a asegurar tu cuenta, solo <0>contáctanos.0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr "¿No solicitaste un cambio de contraseña? Estamos aquí para ayudarte a asegurar tu cuenta, solo <0>contáctanos0>."
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3632,6 +3676,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "Documento abierto"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "Documento pendiente"
@@ -3830,6 +3879,11 @@ msgstr "Nombre del dominio"
msgid "Don't have an account? <0>Sign up0>"
msgstr "¿No tienes una cuenta? <0>Regístrate0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "No transferir (Eliminar todos los documentos)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3968,6 +4022,7 @@ msgstr "Ej.: 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4184,9 +4239,18 @@ msgstr "Habilitar cuenta"
msgid "Enable Account"
msgstr "Habilitar Cuenta"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "Habilitar detección por IA"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "Habilitar funciones de IA"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
-msgstr ""
+msgstr "Activa las funciones impulsadas por IA, como la detección automática de destinatarios. Cuando esté activado, el contenido del documento se enviará a proveedores de IA. Solo usamos proveedores que no conservan datos para entrenamiento y preferimos regiones europeas cuando sea posible."
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
msgid "Enable Authenticator App"
@@ -4224,6 +4288,10 @@ msgstr "Habilitar orden de firma"
msgid "Enable SSO portal"
msgstr "Habilitar portal SSO"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4422,11 +4490,11 @@ msgstr "Error"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error declining account link"
-msgstr ""
+msgstr "Error al rechazar el enlace de cuenta"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error linking account"
-msgstr ""
+msgstr "Error al vincular la cuenta"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "Error uploading file"
@@ -4484,7 +4552,7 @@ msgstr "ID externo"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Extracting contact details"
-msgstr ""
+msgstr "Extrayendo datos de contacto"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -4493,7 +4561,7 @@ msgstr "Error"
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
msgid "Failed to complete the document. Please try again."
-msgstr ""
+msgstr "No se pudo completar el documento. Inténtalo de nuevo."
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Failed to create folder"
@@ -4565,7 +4633,7 @@ msgstr "Falló al actualizar el webhook"
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
msgid "Failed to upload CSV. Please check the file format and try again."
-msgstr ""
+msgstr "Error al subir el CSV. Verifica el formato del archivo e inténtalo de nuevo."
#: packages/email/templates/bulk-send-complete.tsx
msgid "Failed: {failedCount}"
@@ -4725,13 +4793,13 @@ msgstr "¿Olvidaste tu contraseña?"
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
msgctxt "Plan price"
msgid "Free"
-msgstr ""
+msgstr "Gratis"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Free"
-msgstr ""
+msgstr "Gratis"
#: packages/lib/utils/fields.ts
#: packages/ui/primitives/document-flow/types.ts
@@ -4822,10 +4890,26 @@ msgstr "Ir a casa"
msgid "Go to document"
msgstr "Ir al documento"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "Ir a la primera página"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "Ir a la última página"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "Ir a la página siguiente"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "Ir al propietario"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "Ir a la página anterior"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "Ir al equipo"
@@ -4883,7 +4967,7 @@ msgstr "Ayuda a completar el documento para otros firmantes."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Help the AI assign fields to the right recipients."
-msgstr ""
+msgstr "Ayuda a la IA a asignar los campos a los destinatarios correctos."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains._index.tsx
msgid "Here you can add email domains to your organisation."
@@ -4906,8 +4990,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "Aquí puedes configurar las preferencias de marca para tu organización. Los equipos heredarán estas configuraciones por defecto."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "Aquí puedes configurar las preferencias de marca para tu equipo"
+msgid "Here you can set branding preferences for your team."
+msgstr "Aquí puedes configurar las preferencias de marca de tu equipo."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4922,12 +5006,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "Aquí puedes establecer preferencias y valores predeterminados para tu equipo."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "Aquí puedes configurar tus preferencias generales de marca"
+msgid "Here you can set your general branding preferences."
+msgstr "Aquí puedes configurar tus preferencias generales de marca."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "Aquí puedes configurar tus preferencias generales de documento"
+msgid "Here you can set your general document preferences."
+msgstr "Aquí puedes configurar tus preferencias generales de documentos."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5020,11 +5104,11 @@ msgstr "ID copiado al portapapeles"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Identifying input fields"
-msgstr ""
+msgstr "Identificando campos de entrada"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Identifying recipients"
-msgstr ""
+msgstr "Identificando destinatarios"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
msgid "If there is any issue with your subscription, please contact us at <0>{SUPPORT_EMAIL}0>."
@@ -5053,7 +5137,7 @@ msgstr "Importante: Lo que esto significa"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Inactive"
-msgstr ""
+msgstr "Inactiva"
#: apps/remix/app/components/general/app-nav-mobile.tsx
#: apps/remix/app/components/general/app-nav-mobile.tsx
@@ -5092,6 +5176,7 @@ msgstr "Heredar método de autenticación"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5477,13 +5562,14 @@ msgstr "Registros"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Looking for form fields"
-msgstr ""
+msgstr "Buscando campos de formulario"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Looking for signature fields"
-msgstr ""
+msgstr "Buscando campos de firma"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5544,6 +5630,10 @@ msgstr "Gestionar cuentas vinculadas"
msgid "Manage organisation"
msgstr "Administrar organización"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "Administrar organizaciones"
@@ -5636,7 +5726,7 @@ msgstr "Gerentes y superiores"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Mapping fields to recipients"
-msgstr ""
+msgstr "Asignando campos a destinatarios"
#: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx
msgid "Mark as viewed"
@@ -5707,15 +5797,15 @@ msgstr "Miembro desde"
msgid "Members"
msgstr "Miembros"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "Mensaje"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "Mensaje <0>(Opcional)0>"
@@ -5865,10 +5955,6 @@ msgstr "Nunca expira"
msgid "New Password"
msgstr "Nueva Contraseña"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "Nueva plantilla"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5894,6 +5980,7 @@ msgstr "Nombre del próximo destinatario"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "No"
@@ -5909,11 +5996,11 @@ msgstr "No se encontraron documentos"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No email detected"
-msgstr ""
+msgstr "No se detectó ningún correo electrónico"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "No fields were detected in your document."
-msgstr ""
+msgstr "No se detectaron campos en tu documento."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
@@ -5961,7 +6048,7 @@ msgstr "Sin destinatarios"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No recipients were detected in your document."
-msgstr ""
+msgstr "No se detectaron destinatarios en tu documento."
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
#: packages/ui/primitives/recipient-selector.tsx
@@ -6101,8 +6188,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "Una vez que hayas escaneado el código QR o ingresado el código manualmente, ingresa el código proporcionado por tu aplicación de autenticación a continuación."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "Una vez que actualices tus registros DNS, puede tardar hasta 48 horas en propagarse. Una vez que la propagación del DNS se complete, tendrás que regresar y presionar el botón \"Sincronizar\" dominios."
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "Una vez que actualices tus registros DNS, la propagación puede tardar hasta 48 horas. Cuando la propagación del DNS se haya completado, deberás volver y presionar el botón \"Sincronizar\" dominios."
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6136,6 +6223,10 @@ msgstr "Solo se permiten archivos PDF"
msgid "Oops! Something went wrong."
msgstr "¡Ups! Algo salió mal."
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "Abrir menú"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "Abierto"
@@ -6329,20 +6420,6 @@ msgstr "Propiedad transferida a {organisationMemberName}."
msgid "Page {0} of {1}"
msgstr "Página {0} de {1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr ""
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr ""
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6352,7 +6429,7 @@ msgstr "Página {0} de {numPages}"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
msgctxt "Subscription status"
msgid "Paid"
-msgstr ""
+msgstr "De pago"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
@@ -6434,7 +6511,7 @@ msgstr "¡Contraseña actualizada!"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Past Due"
-msgstr ""
+msgstr "Vencida"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
@@ -6688,10 +6765,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/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "Por favor, intenta de nuevo más tarde."
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6873,7 +6946,7 @@ msgstr "Lea la <0>divulgación de firma0> completa."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Reading your document"
-msgstr ""
+msgstr "Leyendo tu documento"
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
msgid "Ready"
@@ -6936,7 +7009,7 @@ msgstr "Destinatario"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
msgid "Recipient {0}"
-msgstr ""
+msgstr "Destinatario {0}"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/components/recipient/recipient-action-auth-select.tsx
@@ -6969,10 +7042,6 @@ msgstr "Destinatario actualizado"
msgid "Recipients"
msgstr "Destinatarios"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr ""
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "Métricas de destinatarios"
@@ -7122,7 +7191,7 @@ msgstr "Eliminar miembro de la organización"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
-msgstr ""
+msgstr "Eliminar destinatario"
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
msgid "Remove team email"
@@ -7146,8 +7215,8 @@ msgstr "Responder al correo"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "Responder al correo"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "Responder al correo electrónico <0>(Opcional)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7284,6 +7353,11 @@ msgstr "Reintentar"
msgid "Return"
msgstr "Regresar"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "Regrese a la página de inicio de sesión de Documenso aquí"
@@ -7450,6 +7524,7 @@ msgid "See the background jobs tab for the status"
msgstr "Consulte la pestaña de trabajos en segundo plano para el estado"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8071,7 +8146,7 @@ msgstr "Configuraciones del sitio"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Skip"
-msgstr ""
+msgstr "Omitir"
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -8089,7 +8164,6 @@ msgstr "Algunos firmantes no han sido asignados a un campo de firma. Asigne al m
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8134,11 +8208,11 @@ msgstr "Algo salió mal al intentar verificar tu dirección de correo electróni
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Something went wrong while detecting fields."
-msgstr ""
+msgstr "Algo salió mal al detectar los campos."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Something went wrong while detecting recipients."
-msgstr ""
+msgstr "Algo salió mal al detectar los destinatarios."
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
@@ -8252,14 +8326,14 @@ msgstr "Cliente de Stripe creado con éxito"
msgid "Stripe Customer ID"
msgstr "ID de Cliente de Stripe"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "Asunto"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "Asunto <0>(Opcional)0>"
@@ -8580,7 +8654,6 @@ 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)"
@@ -8593,7 +8666,7 @@ msgstr "Plantilla Creada"
msgid "Template deleted"
msgstr "Plantilla eliminada"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "Documento de plantilla subido"
@@ -8655,10 +8728,6 @@ msgstr "Plantilla subida"
msgid "Templates"
msgstr "Plantillas"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "Las plantillas te permiten generar documentos rápidamente con destinatarios y campos prellenados."
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "Probar"
@@ -8765,7 +8834,7 @@ msgstr "El nombre para mostrar para esta dirección de correo electrónico"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
-msgstr ""
+msgstr "El documento se ha eliminado correctamente."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
msgid "The document has been moved successfully."
@@ -8773,7 +8842,7 @@ msgstr "El documento se ha movido exitosamente."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "The document has been successfully rejected."
-msgstr ""
+msgstr "El documento se ha rechazado correctamente."
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "The document is already saved and cannot be changed."
@@ -8792,6 +8861,12 @@ msgstr "El propietario del documento ha sido notificado de este rechazo. No se r
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "El documento fue creado pero no se pudo enviar a los destinatarios."
@@ -8826,8 +8901,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
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"
-msgstr "El correo electrónico o la contraseña proporcionada es incorrecta"
+msgid "The email or password provided is incorrect."
+msgstr "El correo electrónico o la contraseña proporcionados son incorrectos."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -8860,7 +8935,7 @@ msgstr "Se produjeron los siguientes errores:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following recipients require an email address:"
-msgstr ""
+msgstr "Los siguientes destinatarios requieren una dirección de correo electrónico:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following signers are missing signature fields:"
@@ -9025,8 +9100,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "El token que has utilizado para restablecer tu contraseña ha expirado o nunca existió. Si aún has olvidado tu contraseña, por favor solicita un nuevo enlace de restablecimiento."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "El código de autenticación de dos factores proporcionado es incorrecto"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr "El código de autenticación de dos factores proporcionado es incorrecto."
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9051,7 +9126,7 @@ msgstr "La autenticación de dos factores del usuario se ha restablecido con éx
#: packages/ui/components/document/document-visibility-select.tsx
msgid "The visibility of the document to the recipient."
-msgstr ""
+msgstr "La visibilidad del documento para el destinatario."
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
@@ -9122,7 +9197,7 @@ msgstr "Esta acción es reversible, pero ten cuidado ya que la cuenta podría ve
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "This can take a minute or two depending on the size of your document."
-msgstr ""
+msgstr "Esto puede tardar uno o dos minutos, según el tamaño de tu documento."
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
msgid "This claim is locked and cannot be deleted."
@@ -9196,8 +9271,8 @@ msgid "This document was created using a direct link."
msgstr "Este documento fue creado usando un enlace directo."
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
-msgstr "Este documento fue enviado usando <0>Documenso.0>"
+msgid "This document was sent using <0>Documenso0>."
+msgstr "Este documento fue enviado usando <0>Documenso0>."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document will be duplicated."
@@ -9502,7 +9577,7 @@ msgstr "Nombre del token"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Too many requests"
-msgstr ""
+msgstr "Demasiadas solicitudes"
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
msgid "Top"
@@ -9528,6 +9603,10 @@ msgstr "Total de firmantes que se registraron"
msgid "Total Users"
msgstr "Total de usuarios"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "Transferir documentos a un equipo diferente"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9538,7 +9617,11 @@ msgstr "Desencadenadores"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Try again"
-msgstr ""
+msgstr "Intentar de nuevo"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "Activa la detección por IA para encontrar automáticamente destinatarios y campos en tus documentos. Los proveedores de IA no conservan tus datos para entrenamiento."
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
@@ -9686,6 +9769,10 @@ msgstr "No autorizado"
msgid "Uncompleted"
msgstr "Incompleto"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "Deshacer"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -9704,7 +9791,7 @@ msgstr "Error desconocido"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Unknown name"
-msgstr ""
+msgstr "Nombre desconocido"
#: apps/remix/app/components/tables/admin-claims-table.tsx
msgid "Unlimited"
@@ -10298,8 +10385,8 @@ msgstr "Esperando tu turno"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "¿Quieres enviar enlaces de firma elegantes como este? <0>Consulta Documenso.0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr "¿Quieres enviar enlaces de firma tan elegantes como este? <0>Prueba Documenso0>."
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10334,6 +10421,10 @@ msgstr "No podemos actualizar esta clave de acceso en este momento. Por favor, i
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "No pudimos crear un cliente de Stripe. Por favor, intente nuevamente."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "No hemos podido habilitar las funciones de IA en este momento. Inténtalo de nuevo."
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "No pudimos actualizar el grupo. Por favor, intente nuevamente."
@@ -10417,7 +10508,7 @@ msgstr "Encontramos un error desconocido al intentar eliminar tu cuenta. Por fav
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "We encountered an unknown error while attempting to delete your document. Please try again later."
-msgstr ""
+msgstr "Encontramos un error desconocido al intentar eliminar tu documento. Inténtalo de nuevo más tarde."
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
msgid "We encountered an unknown error while attempting to disable access."
@@ -10534,16 +10625,6 @@ msgstr "Encontramos un error desconocido al intentar actualizar el correo electr
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "Encontramos un error desconocido al intentar actualizar su perfil. Por favor, inténtelo de nuevo más tarde."
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr ""
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr ""
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "Hemos enviado un correo electrónico de confirmación para la verificación."
@@ -10637,11 +10718,11 @@ msgstr "Nos pondremos en contacto contigo lo antes posible, a través de correo
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "We'll scan your document to find form fields like signature lines, text inputs, checkboxes, and more. Detected fields will be suggested for you to review."
-msgstr ""
+msgstr "Escanearemos tu documento para encontrar campos de formulario como líneas de firma, entradas de texto, casillas de verificación y más. Los campos detectados se sugerirán para que los revises."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "We'll scan your document to find signature fields and identify who needs to sign. Detected recipients will be suggested for you to review."
-msgstr ""
+msgstr "Escanearemos tu documento para encontrar campos de firma e identificar quién debe firmar. Los destinatarios detectados se sugerirán para que los revises."
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
msgid "We'll send a 6-digit code to your email"
@@ -10793,6 +10874,7 @@ msgstr "Anual"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "Sí"
@@ -10905,13 +10987,13 @@ msgid "You are currently updating <0>{0}0>"
msgstr "Actualmente estás actualizando <0>{0}0>"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
-msgstr "Actualmente estás actualizando a <0>{memberName}.0>"
+msgid "You are currently updating <0>{memberName}0>."
+msgstr "Actualmente estás actualizando a <0>{memberName}0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
-msgstr "Actualmente estás actualizando a <0>{organisationMemberName}.0>"
+msgid "You are currently updating <0>{organisationMemberName}0>."
+msgstr "Actualmente estás actualizando a <0>{organisationMemberName}0>."
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
msgid "You are currently updating the <0>{passkeyName}0> passkey."
@@ -10948,11 +11030,11 @@ msgstr "No está autorizado para restablecer la autenticación de dos factores p
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "You can add fields manually in the editor."
-msgstr ""
+msgstr "Puedes agregar campos manualmente en el editor."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You can add recipients manually in the editor."
-msgstr ""
+msgstr "Puedes agregar destinatarios manualmente en el editor."
#: packages/email/template-components/template-confirmation-email.tsx
msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
@@ -10972,16 +11054,16 @@ msgstr "Puedes habilitar el acceso para permitir que todos los miembros de la or
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "Puedes gestionar tus preferencias de correo electrónico aquí"
+msgid "You can manage your email preferences here."
+msgstr "Aquí puedes gestionar tus preferencias de correo electrónico."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
-msgstr ""
+msgstr "Solo puedes detectar campos en sobres en borrador"
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "Puedes revocar el acceso en cualquier momento en la configuración de tu equipo en Documenso <0>aquí.0>"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr "Puedes revocar el acceso en cualquier momento en la configuración de tu equipo en Documenso <0>aquí0>."
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11014,8 +11096,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "No puedes eliminar un grupo que tiene un rol superior al tuyo."
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-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"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr "No puedes eliminar este elemento porque el documento ha sido enviado a los destinatarios."
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11041,8 +11123,8 @@ msgstr "No puede cargar documentos en este momento."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "No puedes subir PDFs encriptados"
+msgid "You cannot upload encrypted PDFs."
+msgstr "No puedes subir archivos PDF cifrados."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11053,8 +11135,8 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "Actualmente no tienes acceso a ningún equipo dentro de esta organización. Por favor, contacta a tu organización para solicitar acceso."
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
-msgstr "No tiene permiso para crear un token para este equipo"
+msgid "You do not have permission to create a token for this team."
+msgstr "No tienes permiso para crear un token para este equipo."
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgid "You don't manage billing for any organisations."
@@ -11123,8 +11205,8 @@ msgstr "Aún no has creado ni recibido documentos. Para crear un documento, por
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You have reached the limit of the number of files per envelope"
-msgstr "Has alcanzado el límite de archivos por sobre"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr "Has alcanzado el límite de archivos por sobre."
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11279,10 +11361,14 @@ msgstr "Ahora se te pedirá que ingreses un código de tu aplicación de autenti
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "Recibirás una copia por correo electrónico del documento firmado cuando todos hayan firmado."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "Eres administrador. Puedes habilitar las funciones de IA para este equipo de inmediato. Todos los miembros del equipo verán la detección por IA una vez que esté habilitada."
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
-msgstr ""
+msgstr "Has realizado demasiadas solicitudes de detección. Espera un minuto antes de intentarlo de nuevo."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Your Account"
@@ -11337,6 +11423,10 @@ msgstr "Tu plan actual está vencido."
msgid "Your direct signing templates"
msgstr "Tus {0} plantillas de firma directa"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "El contenido de tu documento se enviará de forma segura a nuestro proveedor de IA únicamente para la detección y no se almacenará ni se utilizará para entrenamiento."
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11372,14 +11462,14 @@ msgstr "Tu documento ha sido duplicado con éxito."
msgid "Your document has been uploaded successfully."
msgstr "Tu documento ha sido subido con éxito."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Tu documento ha sido subido con éxito. Serás redirigido a la página de plantillas."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Your document is processed securely using AI services that don't retain your data."
-msgstr ""
+msgstr "Tu documento se procesa de forma segura mediante servicios de IA que no conservan tus datos."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
diff --git a/packages/lib/translations/fr/web.po b/packages/lib/translations/fr/web.po
index 2dd3cbc21..f82db74e0 100644
--- a/packages/lib/translations/fr/web.po
+++ b/packages/lib/translations/fr/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2025-11-27 05:32\n"
+"PO-Revision-Date: 2025-12-15 02:39\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -68,7 +68,7 @@ msgstr "{0, plural, one {(1 caractère de trop)} other {(# caractères de trop)}
#. placeholder {2}: table.getFilteredSelectedRowModel().rows.length
#: packages/ui/primitives/data-table-pagination.tsx
msgid "{0, plural, one {{1} of # row selected.} other {{2} of # rows selected.}}"
-msgstr ""
+msgstr "{0, plural, one {{1} sur # ligne sélectionnée.} other {{2} sur # lignes sélectionnées.}}"
#. placeholder {0}: Math.abs(remaningLength)
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
@@ -101,6 +101,11 @@ msgstr "{0, plural, one {# champ} other {# champs}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, one {# dossier} other {# dossiers}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, one {# destinataire a été ajouté grâce à la détection par IA.} other {# destinataires ont été ajoutés grâce à la détection par IA.}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -151,11 +156,44 @@ msgstr "{0, plural, one {1 champ correspondant} other {# champs correspondants}}
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Destinataire} other {# Destinataires}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, one {Page {1} sur {2} - # champ trouvé} other {Page {3} sur {4} - # champs trouvés}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, one {Page {1} sur {2} - # destinataire trouvé} other {Page {3} sur {4} - # destinataires trouvés}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, one {Destinataire ajouté} other {Destinataires ajoutés}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {En attente d'1 destinataire} other {En attente de # destinataires}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, one {Nous avons trouvé # champ dans votre document.} other {Nous avons trouvé # champs dans votre document.}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, one {Nous avons trouvé # destinataire dans votre document.} other {Nous avons trouvé # destinataires dans votre document.}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -200,11 +238,6 @@ msgstr "{0} des {1} documents restants ce mois-ci."
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}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr ""
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -279,7 +312,7 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {Vous ne pouvez pas avoir plus de # clé
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}"
-msgstr ""
+msgstr "{maximumEnvelopeItemCount, plural, one {Vous ne pouvez pas téléverser plus d’un élément par enveloppe.} other {Vous ne pouvez pas téléverser plus de # éléments par enveloppe.}}"
#: packages/lib/utils/document-audit-logs.ts
msgid "{prefix} added a field"
@@ -514,39 +547,39 @@ msgstr "<0>{organisationName}0> a demandé à lier votre compte Documenso actu
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> vous a invité à approuver ce document"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> vous a invité à assister ce document"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> vous a invité à signer ce document"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> vous a invité à voir ce document"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, au nom de \"{0}\", vous a invité à approuver ce document"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, au nom de \"{0}\", vous a invité à assister ce document"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, au nom de \"{0}\", vous a invité à signer ce document"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, au nom de \"{0}\", vous a invité à voir ce document"
#: packages/email/templates/confirm-team-email.tsx
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
@@ -558,7 +591,7 @@ msgstr "<0>Gestion du compte :0> Modifiez les paramètres, permissions, et pr
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Admins only0> - Only admins can access and view the document"
-msgstr ""
+msgstr "<0>Administrateurs uniquement0> - Seuls les administrateurs peuvent accéder au document et le voir"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Data access:0> Access all data associated with your account"
@@ -579,7 +612,7 @@ msgstr "<0>Événements a0:0> Tous"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Everyone0> - Everyone can access and view the document"
-msgstr ""
+msgstr "<0>Tout le monde0> - Tout le monde peut accéder au document et le voir"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Full account access:0> View all your profile information, settings, and activity"
@@ -591,7 +624,7 @@ msgstr "<0>Hériter de la méthode d'authentification0> - Utilisez la méthode
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Managers and above0> - Only managers and above can access and view the document"
-msgstr ""
+msgstr "<0>Managers et plus0> - Seuls les managers et plus peuvent accéder au document et le consulter"
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "<0>No restrictions0> - No authentication required"
@@ -851,9 +884,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "Une demande pour l'utiliser votre e-mail a été initiée par {0} sur Documenso"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "Un secret qui sera envoyé à votre URL afin que vous puissiez vérifier que la demande a été envoyée par Documenso"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Un secret qui sera envoyé à votre URL afin que vous puissiez vérifier que la demande a été envoyée par Documenso."
@@ -951,11 +981,11 @@ msgstr "Compte activé"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account link declined"
-msgstr ""
+msgstr "Lien de compte refusé"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account linked successfully"
-msgstr ""
+msgstr "Compte lié avec succès"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account Linking Request"
@@ -1017,7 +1047,7 @@ msgstr "Actif"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Active"
-msgstr ""
+msgstr "Actif"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -1114,7 +1144,7 @@ msgstr "Ajouter un domaine email"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Add fields"
-msgstr ""
+msgstr "Ajouter des champs"
#: apps/remix/app/components/general/document/document-edit-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
@@ -1182,7 +1212,7 @@ msgstr "Ajouter des espaces réservés"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Add recipients"
-msgstr ""
+msgstr "Ajouter des destinataires"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Add Recipients"
@@ -1286,7 +1316,11 @@ msgstr "Après soumission, un document sera automatiquement généré et ajouté
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "AI Features"
-msgstr ""
+msgstr "Fonctionnalités IA"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "Les fonctionnalités d’IA sont désactivées pour votre équipe. Veuillez demander au propriétaire de votre équipe ou de votre organisation de les activer."
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -1384,7 +1418,7 @@ msgstr "Permet d'authentifier en utilisant des biométries, des gestionnaires de
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Almost done"
-msgstr ""
+msgstr "Presque terminé"
#: apps/remix/app/components/forms/signup.tsx
msgid "Already have an account? <0>Sign in instead0>"
@@ -1478,7 +1512,7 @@ msgstr "Une erreur est survenue lors de la signature automatique du document, ce
#: apps/remix/app/components/general/document-signing/document-signing-form.tsx
msgid "An error occurred while completing the document. Please try again."
-msgstr ""
+msgstr "Une erreur s'est produite lors de la finalisation du document. Veuillez réessayer."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "An error occurred while creating document from template."
@@ -1526,7 +1560,7 @@ msgstr "Une erreur est survenue lors du déplacement du modèle."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "An error occurred while rejecting the document. Please try again."
-msgstr ""
+msgstr "Une erreur s'est produite lors du rejet du document. Veuillez réessayer."
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
#: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx
@@ -1692,11 +1726,11 @@ msgstr "Une erreur inconnue s'est produite lors du déplacement du dossier."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Analyzing page layout"
-msgstr ""
+msgstr "Analyse de la mise en page"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Analyzing pages"
-msgstr ""
+msgstr "Analyse des pages"
#: apps/remix/app/routes/_authenticated+/inbox.tsx
msgid "Any documents that you have been invited to will appear here"
@@ -2265,6 +2299,10 @@ msgstr "Graphiques"
msgid "Checkbox"
msgstr "Case à cocher"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "Option de case à cocher"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "Paramètres de la case à cocher"
@@ -2368,6 +2406,7 @@ msgstr "Secret client"
msgid "Client secret is required"
msgstr "Secret client requis"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2380,7 +2419,6 @@ msgstr "Secret client requis"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2391,7 +2429,9 @@ msgstr "Secret client requis"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "Fermer"
@@ -2584,7 +2624,7 @@ msgstr "Contenu"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Context"
-msgstr ""
+msgstr "Contexte"
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
@@ -2667,13 +2707,13 @@ msgstr "Copié"
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field"
-msgstr ""
+msgstr "Champ copié"
#: apps/remix/app/components/embed/authoring/configure-fields-view.tsx
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field to clipboard"
-msgstr ""
+msgstr "Champ copié dans le presse-papiers"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
@@ -3020,7 +3060,7 @@ msgstr "Paramètres de la date"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "David is the Employee, Lucas is the Manager"
-msgstr ""
+msgstr "David est l'employé, Lucas est le manager"
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -3069,6 +3109,10 @@ msgstr "Fuseau horaire par défaut"
msgid "Default Value"
msgstr "Valeur par défaut"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "supprimer"
@@ -3234,48 +3278,48 @@ msgstr "Détails"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect"
-msgstr ""
+msgstr "Détecter"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detect fields"
-msgstr ""
+msgstr "Détecter les champs"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect recipients"
-msgstr ""
+msgstr "Détecter les destinataires"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
msgid "Detect recipients with AI"
-msgstr ""
+msgstr "Détecter les destinataires avec l'IA"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Detect with AI"
-msgstr ""
+msgstr "Détecter avec l'IA"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detected fields"
-msgstr ""
+msgstr "Champs détectés"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detected recipients"
-msgstr ""
+msgstr "Destinataires détectés"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting fields"
-msgstr ""
+msgstr "Détection des champs"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detecting recipients"
-msgstr ""
+msgstr "Détection des destinataires"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting signature areas"
-msgstr ""
+msgstr "Détection des zones de signature"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detection failed"
-msgstr ""
+msgstr "Échec de la détection"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Developer Mode"
@@ -3288,8 +3332,8 @@ msgid "Device"
msgstr "Appareil"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "Vous n'avez pas demandé de changement de mot de passe ? Nous sommes ici pour vous aider à sécuriser votre compte, il suffit de <0>nous contacter.0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr "Vous n'avez pas demandé de changement de mot de passe ? Nous sommes là pour vous aider à sécuriser votre compte, il vous suffit de <0>nous contacter0>."
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3632,6 +3676,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "Document ouvert"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "Document en attente"
@@ -3830,6 +3879,11 @@ msgstr "Nom de domaine"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Vous n'avez pas de compte? <0>Inscrivez-vous0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "Ne pas transférer (supprimer tous les documents)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3968,6 +4022,7 @@ msgstr "Par ex. 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4184,9 +4239,18 @@ msgstr "Activer le compte"
msgid "Enable Account"
msgstr "Activer le Compte"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "Activer la détection par IA"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "Activer les fonctionnalités d’IA"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
-msgstr ""
+msgstr "Activez les fonctionnalités basées sur l'IA, comme la détection automatique des destinataires. Lorsqu'elles sont activées, le contenu du document est envoyé aux fournisseurs d'IA. Nous n'utilisons que des fournisseurs qui ne conservent pas les données pour l'entraînement et privilégions les régions européennes lorsque c'est possible."
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
msgid "Enable Authenticator App"
@@ -4224,6 +4288,10 @@ msgstr "Activer l'ordre de signature"
msgid "Enable SSO portal"
msgstr "Activer le portail SSO"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4422,11 +4490,11 @@ msgstr "Erreur"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error declining account link"
-msgstr ""
+msgstr "Erreur lors du refus du lien de compte"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error linking account"
-msgstr ""
+msgstr "Erreur lors de la liaison du compte"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "Error uploading file"
@@ -4484,7 +4552,7 @@ msgstr "ID externe"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Extracting contact details"
-msgstr ""
+msgstr "Extraction des coordonnées"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -4493,7 +4561,7 @@ msgstr "Échec"
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
msgid "Failed to complete the document. Please try again."
-msgstr ""
+msgstr "Échec de la finalisation du document. Veuillez réessayer."
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Failed to create folder"
@@ -4565,7 +4633,7 @@ msgstr "Échec de la mise à jour du webhook"
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
msgid "Failed to upload CSV. Please check the file format and try again."
-msgstr ""
+msgstr "Échec du téléversement du fichier CSV. Veuillez vérifier le format du fichier et réessayer."
#: packages/email/templates/bulk-send-complete.tsx
msgid "Failed: {failedCount}"
@@ -4725,13 +4793,13 @@ msgstr "Vous avez oublié votre mot de passe ?"
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
msgctxt "Plan price"
msgid "Free"
-msgstr ""
+msgstr "Gratuit"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Free"
-msgstr ""
+msgstr "Gratuit"
#: packages/lib/utils/fields.ts
#: packages/ui/primitives/document-flow/types.ts
@@ -4822,10 +4890,26 @@ msgstr "Retour à l'accueil"
msgid "Go to document"
msgstr "Aller au document"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "Aller à la première page"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "Aller à la dernière page"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "Aller à la page suivante"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "Aller au propriétaire"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "Aller à la page précédente"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "Aller à l'équipe"
@@ -4883,7 +4967,7 @@ msgstr "Aidez à compléter le document pour les autres signataires."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Help the AI assign fields to the right recipients."
-msgstr ""
+msgstr "Aidez l'IA à attribuer les champs aux bons destinataires."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains._index.tsx
msgid "Here you can add email domains to your organisation."
@@ -4906,8 +4990,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "Ici, vous pouvez définir les préférences de marque pour votre organisation. Les équipes hériteront de ces paramètres par défaut."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "Ici, vous pouvez définir les préférences de marque pour votre équipe."
+msgid "Here you can set branding preferences for your team."
+msgstr "Vous pouvez définir ici les préférences de branding pour votre équipe."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4922,12 +5006,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "Ici, vous pouvez définir des préférences et des valeurs par défaut pour votre équipe."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "Ici, vous pouvez définir vos préférences générales de marque"
+msgid "Here you can set your general branding preferences."
+msgstr "Vous pouvez définir ici vos préférences générales de branding."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "Ici, vous pouvez définir vos préférences générales de document"
+msgid "Here you can set your general document preferences."
+msgstr "Vous pouvez définir ici vos préférences générales pour les documents."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5020,11 +5104,11 @@ msgstr "ID copié dans le presse-papiers"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Identifying input fields"
-msgstr ""
+msgstr "Identification des champs de saisie"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Identifying recipients"
-msgstr ""
+msgstr "Identification des destinataires"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
msgid "If there is any issue with your subscription, please contact us at <0>{SUPPORT_EMAIL}0>."
@@ -5053,7 +5137,7 @@ msgstr "Important : Ce que cela signifie"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Inactive"
-msgstr ""
+msgstr "Inactif"
#: apps/remix/app/components/general/app-nav-mobile.tsx
#: apps/remix/app/components/general/app-nav-mobile.tsx
@@ -5092,6 +5176,7 @@ msgstr "Hériter de la méthode d'authentification"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5477,13 +5562,14 @@ msgstr "Journaux"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Looking for form fields"
-msgstr ""
+msgstr "Recherche de champs de formulaire"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Looking for signature fields"
-msgstr ""
+msgstr "Recherche de champs de signature"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5544,6 +5630,10 @@ msgstr "Gérer les comptes liés"
msgid "Manage organisation"
msgstr "Gérer l'organisation"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "Gérer les organisations"
@@ -5636,7 +5726,7 @@ msgstr "Responsables et supérieur"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Mapping fields to recipients"
-msgstr ""
+msgstr "Association des champs aux destinataires"
#: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx
msgid "Mark as viewed"
@@ -5707,15 +5797,15 @@ msgstr "Membre depuis"
msgid "Members"
msgstr "Membres"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "Message"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "Message <0>(Optionnel)0>"
@@ -5865,10 +5955,6 @@ msgstr "Ne jamais expirer"
msgid "New Password"
msgstr "Nouveau Mot de Passe"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "Nouveau modèle"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5894,6 +5980,7 @@ msgstr "Nom du destinataire suivant"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "Non"
@@ -5909,11 +5996,11 @@ msgstr "Aucun document trouvé"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No email detected"
-msgstr ""
+msgstr "Aucun e-mail détecté"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "No fields were detected in your document."
-msgstr ""
+msgstr "Aucun champ n'a été détecté dans votre document."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
@@ -5961,7 +6048,7 @@ msgstr "Aucun destinataire"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No recipients were detected in your document."
-msgstr ""
+msgstr "Aucun destinataire n'a été détecté dans votre document."
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
#: packages/ui/primitives/recipient-selector.tsx
@@ -6101,8 +6188,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "Une fois que vous avez scanné le code QR ou saisi le code manuellement, entrez le code fourni par votre application d'authentification ci-dessous."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "Une fois que vous avez mis à jour vos enregistrements DNS, cela peut prendre jusqu'à 48 heures pour qu'il soit propagé. Une fois la propagation DNS terminée, vous devrez revenir et appuyer sur le bouton \"Sync\" des domaines."
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "Une fois que vous aurez mis à jour vos enregistrements DNS, la propagation peut prendre jusqu'à 48 heures. Une fois la propagation DNS terminée, vous devrez revenir ici et appuyer sur le bouton \"Synchroniser\" les domaines."
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6136,6 +6223,10 @@ msgstr "Seuls les fichiers PDF sont autorisés"
msgid "Oops! Something went wrong."
msgstr "Oups ! Quelque chose a mal tourné."
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "Ouvrir le menu"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "Ouvert"
@@ -6329,20 +6420,6 @@ msgstr "Propriété transférée à {organisationMemberName}."
msgid "Page {0} of {1}"
msgstr "Page {0} sur {1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr ""
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr ""
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6352,7 +6429,7 @@ msgstr "Page {0} sur {numPages}"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
msgctxt "Subscription status"
msgid "Paid"
-msgstr ""
+msgstr "Payé"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
@@ -6434,7 +6511,7 @@ msgstr "Mot de passe mis à jour !"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Past Due"
-msgstr ""
+msgstr "En retard de paiement"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
@@ -6688,10 +6765,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/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "Veuillez réessayer plus tard."
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6873,7 +6946,7 @@ msgstr "Lisez l'intégralité de la <0>divulgation de signature0>."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Reading your document"
-msgstr ""
+msgstr "Lecture de votre document"
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
msgid "Ready"
@@ -6936,7 +7009,7 @@ msgstr "Destinataire"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
msgid "Recipient {0}"
-msgstr ""
+msgstr "Destinataire {0}"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/components/recipient/recipient-action-auth-select.tsx
@@ -6969,10 +7042,6 @@ msgstr "Destinataire mis à jour"
msgid "Recipients"
msgstr "Destinataires"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr ""
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "Métriques des destinataires"
@@ -7122,7 +7191,7 @@ msgstr "Supprimer le membre de l'organisation"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
-msgstr ""
+msgstr "Supprimer le destinataire"
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
msgid "Remove team email"
@@ -7146,8 +7215,8 @@ msgstr "Répondre à l'e-mail"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "Répondre à l'e-mail"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "Répondre à l’e-mail <0>(Optionnel)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7284,6 +7353,11 @@ msgstr "Réessayer"
msgid "Return"
msgstr "Retour"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "Revenir à la page de connexion de Documenso ici"
@@ -7450,6 +7524,7 @@ msgid "See the background jobs tab for the status"
msgstr "Voir l'onglet travaux en arrière-plan pour le statut"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8071,7 +8146,7 @@ msgstr "Paramètres du site"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Skip"
-msgstr ""
+msgstr "Ignorer"
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -8089,7 +8164,6 @@ msgstr "Certains signataires n'ont pas été assignés à un champ de signature.
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8134,11 +8208,11 @@ msgstr "Quelque chose a mal tourné lors de la tentative de vérification de vot
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Something went wrong while detecting fields."
-msgstr ""
+msgstr "Une erreur s'est produite lors de la détection des champs."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Something went wrong while detecting recipients."
-msgstr ""
+msgstr "Une erreur s'est produite lors de la détection des destinataires."
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
@@ -8252,14 +8326,14 @@ msgstr "Le client Stripe a été créé avec succès"
msgid "Stripe Customer ID"
msgstr "ID client Stripe"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "Sujet"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "Objet <0>(Optionnel)0>"
@@ -8580,7 +8654,6 @@ 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)"
@@ -8593,7 +8666,7 @@ msgstr "Modèle créé"
msgid "Template deleted"
msgstr "Modèle supprimé"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "Document modèle importé"
@@ -8655,10 +8728,6 @@ msgstr "Modèle de document téléchargé"
msgid "Templates"
msgstr "Modèles"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "Les modèles vous permettent de générer rapidement des documents avec des destinataires et des champs pré-remplis."
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "Test"
@@ -8765,7 +8834,7 @@ msgstr "Le nom d'affichage pour cette adresse e-mail"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
-msgstr ""
+msgstr "Le document a été supprimé avec succès."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
msgid "The document has been moved successfully."
@@ -8773,7 +8842,7 @@ msgstr "Le document a été déplacé avec succès."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "The document has been successfully rejected."
-msgstr ""
+msgstr "Le document a été rejeté avec succès."
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "The document is already saved and cannot be changed."
@@ -8792,6 +8861,12 @@ msgstr "Le propriétaire du document a été informé de ce rejet. Aucune action
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "Le propriétaire du document a été informé de votre décision. Il peut vous contacter pour des instructions supplémentaires si nécessaire."
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "Le document a été créé mais n'a pas pu être envoyé aux destinataires."
@@ -8826,8 +8901,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
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"
-msgstr "L'email ou le mot de passe fourni est incorrect"
+msgid "The email or password provided is incorrect."
+msgstr "L’e-mail ou le mot de passe fourni est incorrect."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -8860,7 +8935,7 @@ msgstr "Les erreurs suivantes se sont produites :"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following recipients require an email address:"
-msgstr ""
+msgstr "Les destinataires suivants doivent avoir une adresse e-mail :"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following signers are missing signature fields:"
@@ -9025,8 +9100,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "Le token que vous avez utilisé pour réinitialiser votre mot de passe a expiré ou n'a jamais existé. Si vous avez toujours oublié votre mot de passe, veuillez demander un nouveau lien de réinitialisation."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "Le code d'authentification à deux facteurs fourni est incorrect"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr "Le code d’authentification à deux facteurs fourni est incorrect."
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9051,7 +9126,7 @@ msgstr "L'authentification à deux facteurs de l'utilisateur a été réinitiali
#: packages/ui/components/document/document-visibility-select.tsx
msgid "The visibility of the document to the recipient."
-msgstr ""
+msgstr "La visibilité du document pour le destinataire."
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
@@ -9122,7 +9197,7 @@ msgstr "Cette action est réversible, mais veuillez faire attention car le compt
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "This can take a minute or two depending on the size of your document."
-msgstr ""
+msgstr "Cela peut prendre une à deux minutes selon la taille de votre document."
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
msgid "This claim is locked and cannot be deleted."
@@ -9196,8 +9271,8 @@ msgid "This document was created using a direct link."
msgstr "Ce document a été créé en utilisant un lien direct."
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
-msgstr "Ce document a été envoyé via <0>Documenso.0>"
+msgid "This document was sent using <0>Documenso0>."
+msgstr "Ce document a été envoyé via <0>Documenso0>."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document will be duplicated."
@@ -9502,7 +9577,7 @@ msgstr "Nom du token"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Too many requests"
-msgstr ""
+msgstr "Trop de requêtes"
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
msgid "Top"
@@ -9528,6 +9603,10 @@ msgstr "Total des signataires qui se sont inscrits"
msgid "Total Users"
msgstr "Total des utilisateurs"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "Transférer les documents vers une autre équipe"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9538,7 +9617,11 @@ msgstr "Déclencheurs"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Try again"
-msgstr ""
+msgstr "Réessayer"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "Activez la détection par IA pour trouver automatiquement les destinataires et les champs dans vos documents. Les fournisseurs d’IA ne conservent pas vos données pour l’apprentissage."
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
@@ -9686,6 +9769,10 @@ msgstr "Non autorisé"
msgid "Uncompleted"
msgstr "Non complet"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "Annuler"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -9704,7 +9791,7 @@ msgstr "Erreur inconnue"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Unknown name"
-msgstr ""
+msgstr "Nom inconnu"
#: apps/remix/app/components/tables/admin-claims-table.tsx
msgid "Unlimited"
@@ -10298,8 +10385,8 @@ msgstr "En attente de votre tour"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "Vous voulez envoyer des liens de signature élégants comme celui-ci ? <0>Découvrez Documenso.0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr "Vous voulez envoyer des liens de signature aussi soignés que celui-ci ? <0>Découvrez Documenso0>."
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10334,6 +10421,10 @@ msgstr "Nous ne pouvons pas mettre à jour cette clé de passkey pour le moment.
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "Nous n'avons pas pu créer un client Stripe. Veuillez réessayer."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "Nous n’avons pas pu activer les fonctionnalités d’IA pour le moment. Veuillez réessayer."
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "Nous n'avons pas pu mettre à jour le groupe. Veuillez réessayer."
@@ -10417,7 +10508,7 @@ msgstr "Une erreur inconnue s'est produite lors de la suppression de votre compt
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "We encountered an unknown error while attempting to delete your document. Please try again later."
-msgstr ""
+msgstr "Nous avons rencontré une erreur inconnue lors de la tentative de suppression de votre document. Veuillez réessayer plus tard."
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
msgid "We encountered an unknown error while attempting to disable access."
@@ -10534,16 +10625,6 @@ msgstr "Une erreur inconnue s'est produite lors de la mise à jour de l'e-mail d
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "Nous avons rencontré une erreur inconnue lors de la tentative de mise à jour de votre profil. Veuillez réessayer plus tard."
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr ""
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr ""
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "Nous avons envoyé un e-mail de confirmation pour vérification."
@@ -10637,11 +10718,11 @@ msgstr "Nous vous recontacterons dès que possible par email."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "We'll scan your document to find form fields like signature lines, text inputs, checkboxes, and more. Detected fields will be suggested for you to review."
-msgstr ""
+msgstr "Nous allons analyser votre document pour trouver des champs de formulaire comme des lignes de signature, des zones de texte, des cases à cocher, etc. Les champs détectés vous seront proposés pour vérification."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "We'll scan your document to find signature fields and identify who needs to sign. Detected recipients will be suggested for you to review."
-msgstr ""
+msgstr "Nous allons analyser votre document pour trouver les champs de signature et identifier qui doit signer. Les destinataires détectés vous seront proposés pour vérification."
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
msgid "We'll send a 6-digit code to your email"
@@ -10793,6 +10874,7 @@ msgstr "Annuel"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "Oui"
@@ -10905,13 +10987,13 @@ msgid "You are currently updating <0>{0}0>"
msgstr "Vous mettez actuellement à jour <0>{0}0>"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
-msgstr "Vous mettez actuellement à jour <0>{memberName}.0>"
+msgid "You are currently updating <0>{memberName}0>."
+msgstr "Vous mettez actuellement à jour <0>{memberName}0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
-msgstr "Vous mettez actuellement à jour <0>{organisationMemberName}.0>"
+msgid "You are currently updating <0>{organisationMemberName}0>."
+msgstr "Vous mettez actuellement à jour <0>{organisationMemberName}0>."
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
msgid "You are currently updating the <0>{passkeyName}0> passkey."
@@ -10948,11 +11030,11 @@ msgstr "Vous n'êtes pas autorisé à réinitialiser l'authentification à deux
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "You can add fields manually in the editor."
-msgstr ""
+msgstr "Vous pouvez ajouter des champs manuellement dans l'éditeur."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You can add recipients manually in the editor."
-msgstr ""
+msgstr "Vous pouvez ajouter des destinataires manuellement dans l'éditeur."
#: packages/email/template-components/template-confirmation-email.tsx
msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
@@ -10972,16 +11054,16 @@ msgstr "Vous pouvez autoriser l'accès par défaut, permettant à tous les membr
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "Vous pouvez gérer vos préférences de messagerie ici"
+msgid "You can manage your email preferences here."
+msgstr "Vous pouvez gérer vos préférences d’e-mail ici."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
-msgstr ""
+msgstr "Vous pouvez uniquement détecter les champs dans les enveloppes brouillon"
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "Vous pouvez révoquer l'accès à tout moment dans les paramètres de votre équipe sur Documenso <0>ici.0>"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr "Vous pouvez révoquer l’accès à tout moment dans les paramètres de votre équipe sur Documenso <0>ici0>."
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11014,8 +11096,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "Vous ne pouvez pas supprimer un groupe qui a un rôle supérieur au vôtre."
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-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"
+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/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11041,8 +11123,8 @@ msgstr "Vous ne pouvez pas importer de documents pour le moment."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "Vous ne pouvez pas importer de PDF cryptés"
+msgid "You cannot upload encrypted PDFs."
+msgstr "Vous ne pouvez pas importer de PDF chiffrés."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11053,8 +11135,8 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "Vous n'avez actuellement accès à aucune équipe au sein de cette organisation. Veuillez contacter votre organisation pour demander l'accès."
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
-msgstr "Vous n'avez pas la permission de créer un jeton pour cette équipe"
+msgid "You do not have permission to create a token for this team."
+msgstr "Vous n’avez pas l’autorisation de créer un jeton pour cette équipe."
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgid "You don't manage billing for any organisations."
@@ -11123,8 +11205,8 @@ msgstr "Vous n'avez pas encore créé ou reçu de documents. Pour créer un docu
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.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"
+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."
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11279,10 +11361,14 @@ msgstr "Vous devrez maintenant entrer un code de votre application d'authentific
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "Vous recevrez une copie par e-mail du document signé une fois que tout le monde aura signé."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "Vous êtes administrateur. Vous pouvez activer immédiatement les fonctionnalités d’IA pour cette équipe. Tous les membres de l’équipe verront la détection par IA une fois qu’elle sera activée."
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
-msgstr ""
+msgstr "Vous avez effectué trop de demandes de détection. Veuillez patienter une minute avant de réessayer."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Your Account"
@@ -11337,6 +11423,10 @@ msgstr "Votre plan actuel est arrivé à échéance."
msgid "Your direct signing templates"
msgstr "Vos modèles de signature directe"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "Le contenu de votre document sera envoyé de manière sécurisée à notre fournisseur d’IA uniquement pour la détection et ne sera ni stocké ni utilisé pour l’apprentissage."
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11372,14 +11462,14 @@ msgstr "Votre document a été dupliqué avec succès."
msgid "Your document has been uploaded successfully."
msgstr "Votre document a été importé avec succès."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Votre document a été importé avec succès. Vous serez redirigé vers la page de modèle."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Your document is processed securely using AI services that don't retain your data."
-msgstr ""
+msgstr "Votre document est traité en toute sécurité à l'aide de services d'IA qui ne conservent pas vos données."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
diff --git a/packages/lib/translations/it/web.po b/packages/lib/translations/it/web.po
index c02510d6d..aad974b97 100644
--- a/packages/lib/translations/it/web.po
+++ b/packages/lib/translations/it/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: it\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2025-11-27 05:32\n"
+"PO-Revision-Date: 2025-12-15 02:39\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -68,7 +68,7 @@ msgstr "{0, plural, one {(1 carattere in eccesso)} other {(# caratteri in eccess
#. placeholder {2}: table.getFilteredSelectedRowModel().rows.length
#: packages/ui/primitives/data-table-pagination.tsx
msgid "{0, plural, one {{1} of # row selected.} other {{2} of # rows selected.}}"
-msgstr ""
+msgstr "{0, plural, one {{1} di # riga selezionata.} other {{2} di # righe selezionate.}}"
#. placeholder {0}: Math.abs(remaningLength)
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
@@ -101,6 +101,11 @@ msgstr "{0, plural, one {# campo} other {# campi}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, one {# cartella} other {# cartelle}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, one {# destinatario è stato aggiunto dal rilevamento AI.} other {# destinatari sono stati aggiunti dal rilevamento AI.}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -151,11 +156,44 @@ msgstr "{0, plural, one {1 campo corrispondente} other {# campi corrispondenti}}
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 destinatario} other {# destinatari}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, one {Pagina {1} di {2} - # campo trovato} other {Pagina {3} di {4} - # campi trovati}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, one {Pagina {1} di {2} - # destinatario trovato} other {Pagina {3} di {4} - # destinatari trovati}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, one {Destinatario aggiunto} other {Destinatari aggiunti}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {In attesa di 1 destinatario} other {In attesa di # destinatari}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, one {Abbiamo trovato # campo nel tuo documento.} other {Abbiamo trovato # campi nel tuo documento.}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, one {Abbiamo trovato # destinatario nel tuo documento.} other {Abbiamo trovato # destinatari nel tuo documento.}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -200,11 +238,6 @@ msgstr "{0} di {1} documenti rimanenti questo mese."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} per conto di \"{1}\" ti ha invitato a {recipientActionVerb} il documento \"{2}\"."
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr ""
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -279,7 +312,7 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {Non puoi avere più di # chiave di acces
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}"
-msgstr ""
+msgstr "{maximumEnvelopeItemCount, plural, one {Non puoi caricare più di # elemento per busta.} other {Non puoi caricare più di # elementi per busta.}}"
#: packages/lib/utils/document-audit-logs.ts
msgid "{prefix} added a field"
@@ -514,39 +547,39 @@ msgstr "<0>{organisationName}0> ha richiesto di collegare il tuo account Docum
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> ti ha invitato ad approvare questo documento"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> ti ha invitato ad assistere questo documento"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> ti ha invitato a firmare questo documento"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> ti ha invitato a visualizzare questo documento"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, per conto di \"{0}\", ti ha invitato ad approvare questo documento"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, per conto di \"{0}\", ti ha invitato ad assistere questo documento"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, per conto di \"{0}\", ti ha invitato a firmare questo documento"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0>, per conto di \"{0}\", ti ha invitato a visualizzare questo documento"
#: packages/email/templates/confirm-team-email.tsx
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
@@ -558,7 +591,7 @@ msgstr "<0>Gestione account:0> Modifica le impostazioni, le autorizzazioni e l
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Admins only0> - Only admins can access and view the document"
-msgstr ""
+msgstr "<0>Solo amministratori0> - Solo gli amministratori possono accedere e visualizzare il documento"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Data access:0> Access all data associated with your account"
@@ -579,7 +612,7 @@ msgstr "<0>Eventi:0> Tutti"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Everyone0> - Everyone can access and view the document"
-msgstr ""
+msgstr "<0>Chiunque0> - Chiunque può accedere e visualizzare il documento"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Full account access:0> View all your profile information, settings, and activity"
@@ -591,7 +624,7 @@ msgstr "<0>Eredita metodo di autenticazione0> - Usa il metodo globale di auten
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Managers and above0> - Only managers and above can access and view the document"
-msgstr ""
+msgstr "<0>Manager e superiori0> - Solo i manager e i superiori possono accedere al documento e visualizzarlo"
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "<0>No restrictions0> - No authentication required"
@@ -851,9 +884,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "Una richiesta per utilizzare la tua email è stata avviata da {0} su Documenso"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "Un codice segreto che verrà inviato al tuo URL in modo che tu possa verificare che la richiesta sia stata inviata da Documenso"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Un codice segreto che verrà inviato al tuo URL in modo che tu possa verificare che la richiesta sia stata inviata da Documenso."
@@ -951,11 +981,11 @@ msgstr "Account abilitato"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account link declined"
-msgstr ""
+msgstr "Collegamento dell'account rifiutato"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account linked successfully"
-msgstr ""
+msgstr "Account collegato correttamente"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account Linking Request"
@@ -1017,7 +1047,7 @@ msgstr "Attivo"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Active"
-msgstr ""
+msgstr "Attivo"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -1114,7 +1144,7 @@ msgstr "Aggiungi Dominio Email"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Add fields"
-msgstr ""
+msgstr "Aggiungi campi"
#: apps/remix/app/components/general/document/document-edit-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
@@ -1182,7 +1212,7 @@ msgstr "Aggiungi segnaposto"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Add recipients"
-msgstr ""
+msgstr "Aggiungi destinatari"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Add Recipients"
@@ -1286,7 +1316,11 @@ msgstr "Dopo l'invio, un documento verrà generato automaticamente e aggiunto al
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "AI Features"
-msgstr ""
+msgstr "Funzionalità IA"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "Le funzionalità di IA sono disabilitate per il tuo team. Chiedi al proprietario del team o al proprietario dell’organizzazione di abilitarle."
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -1384,7 +1418,7 @@ msgstr "Consente di autenticare utilizzando biometria, gestori di password, chia
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Almost done"
-msgstr ""
+msgstr "Quasi finito"
#: apps/remix/app/components/forms/signup.tsx
msgid "Already have an account? <0>Sign in instead0>"
@@ -1478,7 +1512,7 @@ msgstr "Si è verificato un errore durante la firma automatica del documento, al
#: apps/remix/app/components/general/document-signing/document-signing-form.tsx
msgid "An error occurred while completing the document. Please try again."
-msgstr ""
+msgstr "Si è verificato un errore durante il completamento del documento. Riprova."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "An error occurred while creating document from template."
@@ -1526,7 +1560,7 @@ msgstr "Si è verificato un errore durante lo spostamento del modello."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "An error occurred while rejecting the document. Please try again."
-msgstr ""
+msgstr "Si è verificato un errore durante il rifiuto del documento. Riprova."
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
#: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx
@@ -1692,11 +1726,11 @@ msgstr "Si è verificato un errore sconosciuto durante lo spostamento della cart
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Analyzing page layout"
-msgstr ""
+msgstr "Analisi del layout della pagina in corso"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Analyzing pages"
-msgstr ""
+msgstr "Analisi delle pagine in corso"
#: apps/remix/app/routes/_authenticated+/inbox.tsx
msgid "Any documents that you have been invited to will appear here"
@@ -2265,6 +2299,10 @@ msgstr "Grafici"
msgid "Checkbox"
msgstr "Casella di controllo"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "Opzione casella di controllo"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "Impostazioni del checkbox"
@@ -2368,6 +2406,7 @@ msgstr "Segreto Cliente"
msgid "Client secret is required"
msgstr "È richiesto il segreto cliente"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2380,7 +2419,6 @@ msgstr "È richiesto il segreto cliente"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2391,7 +2429,9 @@ msgstr "È richiesto il segreto cliente"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "Chiudi"
@@ -2584,7 +2624,7 @@ msgstr "Contenuto"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Context"
-msgstr ""
+msgstr "Contesto"
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
@@ -2667,13 +2707,13 @@ msgstr "Copiato"
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field"
-msgstr ""
+msgstr "Campo copiato"
#: apps/remix/app/components/embed/authoring/configure-fields-view.tsx
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field to clipboard"
-msgstr ""
+msgstr "Campo copiato negli appunti"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
@@ -3020,7 +3060,7 @@ msgstr "Impostazioni della data"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "David is the Employee, Lucas is the Manager"
-msgstr ""
+msgstr "David è il dipendente, Lucas è il manager"
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -3069,6 +3109,10 @@ msgstr "Fuso Orario Predefinito"
msgid "Default Value"
msgstr "Valore predefinito"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "elimina"
@@ -3234,48 +3278,48 @@ msgstr "Dettagli"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect"
-msgstr ""
+msgstr "Rileva"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detect fields"
-msgstr ""
+msgstr "Rileva campi"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect recipients"
-msgstr ""
+msgstr "Rileva destinatari"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
msgid "Detect recipients with AI"
-msgstr ""
+msgstr "Rileva destinatari con l'IA"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Detect with AI"
-msgstr ""
+msgstr "Rileva con l'IA"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detected fields"
-msgstr ""
+msgstr "Campi rilevati"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detected recipients"
-msgstr ""
+msgstr "Destinatari rilevati"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting fields"
-msgstr ""
+msgstr "Rilevamento dei campi in corso"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detecting recipients"
-msgstr ""
+msgstr "Rilevamento dei destinatari in corso"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting signature areas"
-msgstr ""
+msgstr "Rilevamento delle aree di firma in corso"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detection failed"
-msgstr ""
+msgstr "Rilevamento non riuscito"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Developer Mode"
@@ -3288,8 +3332,8 @@ msgid "Device"
msgstr "Dispositivo"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "Non hai richiesto un cambio di password? Siamo qui per aiutarti a proteggere il tuo account, basta <0>contattarci.0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr "Non hai richiesto una modifica della password? Siamo qui per aiutarti a mettere al sicuro il tuo account, ti basta <0>contattarci0>."
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3632,6 +3676,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "Documento aperto"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "Documento in sospeso"
@@ -3830,6 +3879,11 @@ msgstr "Nome Dominio"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Non hai un account? <0>Registrati0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "Non trasferire (elimina tutti i documenti)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3968,6 +4022,7 @@ msgstr "Es. 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4184,9 +4239,18 @@ msgstr "Abilita account"
msgid "Enable Account"
msgstr "Abilita Account"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "Abilita il rilevamento IA"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "Abilita le funzionalità di IA"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
-msgstr ""
+msgstr "Abilita funzionalità basate sull'IA, come il rilevamento automatico dei destinatari. Quando è abilitata, il contenuto del documento verrà inviato ai provider di IA. Utilizziamo solo provider che non conservano i dati per l'addestramento e privilegiamo le regioni europee quando disponibili."
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
msgid "Enable Authenticator App"
@@ -4224,6 +4288,10 @@ msgstr "Abilita ordine di firma"
msgid "Enable SSO portal"
msgstr "Abilita portale SSO"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4422,11 +4490,11 @@ msgstr "Errore"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error declining account link"
-msgstr ""
+msgstr "Errore durante il rifiuto del collegamento dell'account"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error linking account"
-msgstr ""
+msgstr "Errore durante il collegamento dell'account"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "Error uploading file"
@@ -4484,7 +4552,7 @@ msgstr "ID esterno"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Extracting contact details"
-msgstr ""
+msgstr "Estrazione dei dettagli di contatto in corso"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -4493,7 +4561,7 @@ msgstr "Non riuscito"
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
msgid "Failed to complete the document. Please try again."
-msgstr ""
+msgstr "Impossibile completare il documento. Riprova."
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Failed to create folder"
@@ -4565,7 +4633,7 @@ msgstr "Aggiornamento webhook fallito"
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
msgid "Failed to upload CSV. Please check the file format and try again."
-msgstr ""
+msgstr "Caricamento del CSV non riuscito. Controlla il formato del file e riprova."
#: packages/email/templates/bulk-send-complete.tsx
msgid "Failed: {failedCount}"
@@ -4725,13 +4793,13 @@ msgstr "Hai dimenticato la tua password?"
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
msgctxt "Plan price"
msgid "Free"
-msgstr ""
+msgstr "Gratuito"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Free"
-msgstr ""
+msgstr "Gratuito"
#: packages/lib/utils/fields.ts
#: packages/ui/primitives/document-flow/types.ts
@@ -4822,10 +4890,26 @@ msgstr "Vai a home"
msgid "Go to document"
msgstr "Vai al documento"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "Vai alla prima pagina"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "Vai all'ultima pagina"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "Vai alla pagina successiva"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "Vai al proprietario"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "Vai alla pagina precedente"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "Vai al team"
@@ -4883,7 +4967,7 @@ msgstr "Aiuta a completare il documento per altri firmatari."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Help the AI assign fields to the right recipients."
-msgstr ""
+msgstr "Aiuta l'IA ad assegnare i campi ai destinatari corretti."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains._index.tsx
msgid "Here you can add email domains to your organisation."
@@ -4906,8 +4990,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "Qui puoi impostare le preferenze di branding per la tua organizzazione. I team erediteranno queste impostazioni per impostazione predefinita."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "Qui puoi impostare le preferenze di branding per il tuo team"
+msgid "Here you can set branding preferences for your team."
+msgstr "Qui puoi impostare le preferenze di branding per il tuo team."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4922,12 +5006,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "Qui puoi impostare preferenze e valori predefiniti per il tuo team."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "Qui puoi impostare le tue preferenze generali di branding"
+msgid "Here you can set your general branding preferences."
+msgstr "Qui puoi impostare le tue preferenze generali di branding."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "Qui puoi impostare le tue preferenze generali dei documenti"
+msgid "Here you can set your general document preferences."
+msgstr "Qui puoi impostare le tue preferenze generali per i documenti."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5020,11 +5104,11 @@ msgstr "ID copiato negli appunti"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Identifying input fields"
-msgstr ""
+msgstr "Identificazione dei campi di input in corso"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Identifying recipients"
-msgstr ""
+msgstr "Identificazione dei destinatari in corso"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
msgid "If there is any issue with your subscription, please contact us at <0>{SUPPORT_EMAIL}0>."
@@ -5053,7 +5137,7 @@ msgstr "Importante: Cosa Significa"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Inactive"
-msgstr ""
+msgstr "Inattivo"
#: apps/remix/app/components/general/app-nav-mobile.tsx
#: apps/remix/app/components/general/app-nav-mobile.tsx
@@ -5092,6 +5176,7 @@ msgstr "Ereditare metodo di autenticazione"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5477,13 +5562,14 @@ msgstr "Log"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Looking for form fields"
-msgstr ""
+msgstr "Ricerca dei campi del modulo in corso"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Looking for signature fields"
-msgstr ""
+msgstr "Ricerca dei campi firma in corso"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5544,6 +5630,10 @@ msgstr "Gestisci account collegati"
msgid "Manage organisation"
msgstr "Gestisci l'organizzazione"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "Gestisci le organizzazioni"
@@ -5636,7 +5726,7 @@ msgstr "Manager e superiori"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Mapping fields to recipients"
-msgstr ""
+msgstr "Associazione dei campi ai destinatari in corso"
#: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx
msgid "Mark as viewed"
@@ -5707,15 +5797,15 @@ msgstr "Membro dal"
msgid "Members"
msgstr "Membri"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "Messaggio"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "Messaggio <0>(Opzionale)0>"
@@ -5865,10 +5955,6 @@ msgstr "Mai scadere"
msgid "New Password"
msgstr "Nuova Password"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "Nuovo modello"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5894,6 +5980,7 @@ msgstr "Nome prossimo destinatario"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "No"
@@ -5909,11 +5996,11 @@ msgstr "Nessun documento trovato"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No email detected"
-msgstr ""
+msgstr "Nessuna email rilevata"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "No fields were detected in your document."
-msgstr ""
+msgstr "Nel tuo documento non è stato rilevato alcun campo."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
@@ -5961,7 +6048,7 @@ msgstr "Nessun destinatario"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No recipients were detected in your document."
-msgstr ""
+msgstr "Nel tuo documento non è stato rilevato alcun destinatario."
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
#: packages/ui/primitives/recipient-selector.tsx
@@ -6101,8 +6188,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "Una volta scansionato il codice QR o inserito manualmente il codice, inserisci il codice fornito dalla tua app di autenticazione qui sotto."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "Una volta aggiornati i tuoi record DNS, potrebbero volerci fino a 48 ore per propagarsi. Una volta completata la propagazione DNS, dovrai tornare indietro e premere il pulsante \"Sincronizza\" domini"
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "Dopo aver aggiornato i record DNS, la propagazione potrebbe richiedere fino a 48 ore. Una volta completata la propagazione dei DNS dovrai tornare qui e premere il pulsante \"Sincronizza\" domini."
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6136,6 +6223,10 @@ msgstr "Sono consentiti solo file PDF"
msgid "Oops! Something went wrong."
msgstr "Ops! Qualcosa è andato storto."
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "Apri menu"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "Aperto"
@@ -6329,20 +6420,6 @@ msgstr "Proprietà trasferita a {organisationMemberName}."
msgid "Page {0} of {1}"
msgstr "Pagina {0} di {1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr ""
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr ""
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6352,7 +6429,7 @@ msgstr "Pagina {0} di {numPages}"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
msgctxt "Subscription status"
msgid "Paid"
-msgstr ""
+msgstr "A pagamento"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
@@ -6434,7 +6511,7 @@ msgstr "Password aggiornata!"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Past Due"
-msgstr ""
+msgstr "In ritardo"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
@@ -6688,10 +6765,6 @@ msgstr "Si prega di provare un altro dominio."
msgid "Please try again and make sure you enter the correct email address."
msgstr "Si prega di riprovare assicurandosi di inserire l'indirizzo email corretto."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "Si prega di riprovare più tardi."
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6873,7 +6946,7 @@ msgstr "Leggi l'intera <0>divulgazione della firma0>."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Reading your document"
-msgstr ""
+msgstr "Lettura del documento in corso"
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
msgid "Ready"
@@ -6936,7 +7009,7 @@ msgstr "Destinatario"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
msgid "Recipient {0}"
-msgstr ""
+msgstr "Destinatario {0}"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/components/recipient/recipient-action-auth-select.tsx
@@ -6969,10 +7042,6 @@ msgstr "Destinatario aggiornato"
msgid "Recipients"
msgstr "Destinatari"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr ""
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "Metriche dei destinatari"
@@ -7122,7 +7191,7 @@ msgstr "Rimuovere membro dell'organizzazione"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
-msgstr ""
+msgstr "Rimuovi destinatario"
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
msgid "Remove team email"
@@ -7146,8 +7215,8 @@ msgstr "Rispondi all'email"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "Rispondi a Email"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "Rispondi all'email <0>(facoltativo)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7284,6 +7353,11 @@ msgstr "Riprova"
msgid "Return"
msgstr "Ritorna"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "Torna alla pagina di accesso a Documenso qui"
@@ -7450,6 +7524,7 @@ msgid "See the background jobs tab for the status"
msgstr "Consulta la scheda lavori in background per lo stato"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8071,7 +8146,7 @@ msgstr "Impostazioni del sito"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Skip"
-msgstr ""
+msgstr "Salta"
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -8089,7 +8164,6 @@ msgstr "Alcuni firmatari non hanno un campo firma assegnato. Assegna almeno 1 ca
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8134,11 +8208,11 @@ msgstr "Qualcosa è andato storto durante il tentativo di verifica del tuo indir
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Something went wrong while detecting fields."
-msgstr ""
+msgstr "Si è verificato un problema durante il rilevamento dei campi."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Something went wrong while detecting recipients."
-msgstr ""
+msgstr "Si è verificato un problema durante il rilevamento dei destinatari."
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
@@ -8252,14 +8326,14 @@ msgstr "Cliente Stripe creato con successo"
msgid "Stripe Customer ID"
msgstr "ID cliente di Stripe"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "Soggetto"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "Oggetto <0>(Opzionale)0>"
@@ -8580,7 +8654,6 @@ msgstr "Team a cui è attualmente assegnato questo gruppo di organizzazione"
msgid "Template"
msgstr "Modello"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: packages/ui/primitives/document-upload-button.tsx
msgid "Template (Legacy)"
msgstr "Modello (Legacy)"
@@ -8593,7 +8666,7 @@ msgstr "Modello creato"
msgid "Template deleted"
msgstr "Modello eliminato"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "Documento modello caricato"
@@ -8655,10 +8728,6 @@ msgstr "Modello caricato"
msgid "Templates"
msgstr "Modelli"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "I modelli ti consentono di generare rapidamente documenti con destinatari e campi precompilati."
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "Test"
@@ -8765,7 +8834,7 @@ msgstr "Il nome visualizzato per questo indirizzo email"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
-msgstr ""
+msgstr "Il documento è stato eliminato correttamente."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
msgid "The document has been moved successfully."
@@ -8773,7 +8842,7 @@ msgstr "Il documento è stato spostato con successo."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "The document has been successfully rejected."
-msgstr ""
+msgstr "Il documento è stato rifiutato correttamente."
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "The document is already saved and cannot be changed."
@@ -8792,6 +8861,12 @@ msgstr "Il proprietario del documento è stato informato di questo rifiuto. Non
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "Il proprietario del documento è stato informato della tua decisione. Potrebbe contattarti per ulteriori istruzioni, se necessario."
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "Il documento è stato creato ma non è stato possibile inviarlo ai destinatari."
@@ -8826,8 +8901,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
msgstr "Il dominio email che stai cercando potrebbe essere stato rimosso, rinominato o potrebbe non essere mai esistito."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The email or password provided is incorrect"
-msgstr "L'email o la password fornita è errata"
+msgid "The email or password provided is incorrect."
+msgstr "L'email o la password inserita non è corretta."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -8860,7 +8935,7 @@ msgstr "Si sono verificati i seguenti errori:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following recipients require an email address:"
-msgstr ""
+msgstr "I seguenti destinatari richiedono un indirizzo email:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following signers are missing signature fields:"
@@ -9025,8 +9100,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "Il token che hai usato per reimpostare la tua password è scaduto o non è mai esistito. Se hai ancora dimenticato la tua password, richiedi un nuovo link per la reimpostazione."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "Il codice di autenticazione a due fattori fornito è errato"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr "Il codice di autenticazione a due fattori inserito non è corretto."
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9051,7 +9126,7 @@ msgstr "L'autenticazione a due fattori dell'utente è stata reimpostata con succ
#: packages/ui/components/document/document-visibility-select.tsx
msgid "The visibility of the document to the recipient."
-msgstr ""
+msgstr "La visibilità del documento per il destinatario."
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
@@ -9122,7 +9197,7 @@ msgstr "Questa azione è reversibile, ma fai attenzione poiché l'account potreb
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "This can take a minute or two depending on the size of your document."
-msgstr ""
+msgstr "Questo può richiedere uno o due minuti a seconda delle dimensioni del documento."
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
msgid "This claim is locked and cannot be deleted."
@@ -9196,8 +9271,8 @@ msgid "This document was created using a direct link."
msgstr "Questo documento è stato creato utilizzando un link diretto."
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
-msgstr "Questo documento è stato inviato utilizzando <0>Documenso.0>"
+msgid "This document was sent using <0>Documenso0>."
+msgstr "Questo documento è stato inviato tramite <0>Documenso0>."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document will be duplicated."
@@ -9502,7 +9577,7 @@ msgstr "Nome del token"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Too many requests"
-msgstr ""
+msgstr "Troppe richieste"
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
msgid "Top"
@@ -9528,6 +9603,10 @@ msgstr "Totale firmatari che si sono iscritti"
msgid "Total Users"
msgstr "Totale utenti"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "Trasferisci i documenti a un altro team"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9538,7 +9617,11 @@ msgstr "Trigger"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Try again"
-msgstr ""
+msgstr "Riprova"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "Attiva il rilevamento IA per trovare automaticamente destinatari e campi nei tuoi documenti. I provider di IA non conservano i tuoi dati per l’addestramento."
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
@@ -9686,6 +9769,10 @@ msgstr "Non autorizzato"
msgid "Uncompleted"
msgstr "Incompleto"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "Annulla"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -9704,7 +9791,7 @@ msgstr "Errore sconosciuto"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Unknown name"
-msgstr ""
+msgstr "Nome sconosciuto"
#: apps/remix/app/components/tables/admin-claims-table.tsx
msgid "Unlimited"
@@ -10298,8 +10385,8 @@ msgstr "In attesa del tuo turno"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "Vuoi inviare link di firma eleganti come questo? <0>Scopri Documenso.0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr "Vuoi inviare link per la firma eleganti come questo? <0>Dai un'occhiata a Documenso0>."
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10334,6 +10421,10 @@ msgstr "Non siamo in grado di aggiornare questa chiave d'accesso al momento. Per
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "Non siamo riusciti a creare un cliente di Stripe. Si prega di riprovare."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "Al momento non siamo riusciti ad abilitare le funzionalità di IA. Riprova."
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "Non siamo riusciti ad aggiornare il gruppo. Si prega di riprovare."
@@ -10417,7 +10508,7 @@ msgstr "Abbiamo riscontrato un errore sconosciuto durante il tentativo di elimin
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "We encountered an unknown error while attempting to delete your document. Please try again later."
-msgstr ""
+msgstr "Si è verificato un errore sconosciuto durante il tentativo di eliminare il documento. Riprova più tardi."
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
msgid "We encountered an unknown error while attempting to disable access."
@@ -10534,16 +10625,6 @@ msgstr "Abbiamo riscontrato un errore sconosciuto durante il tentativo di aggior
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "Abbiamo riscontrato un errore sconosciuto durante il tentativo di aggiornare il tuo profilo. Si prega di riprovare più tardi."
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr ""
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr ""
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "Abbiamo inviato un'email di conferma per la verifica."
@@ -10637,11 +10718,11 @@ msgstr "Ti risponderemo via email il prima possibile."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "We'll scan your document to find form fields like signature lines, text inputs, checkboxes, and more. Detected fields will be suggested for you to review."
-msgstr ""
+msgstr "Analizzeremo il tuo documento per trovare campi modulo come linee di firma, campi di testo, caselle di controllo e altro. I campi rilevati ti verranno suggeriti per la revisione."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "We'll scan your document to find signature fields and identify who needs to sign. Detected recipients will be suggested for you to review."
-msgstr ""
+msgstr "Analizzeremo il tuo documento per trovare campi firma e identificare chi deve firmare. I destinatari rilevati ti verranno suggeriti per la revisione."
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
msgid "We'll send a 6-digit code to your email"
@@ -10793,6 +10874,7 @@ msgstr "Annuale"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "Sì"
@@ -10905,13 +10987,13 @@ msgid "You are currently updating <0>{0}0>"
msgstr "Attualmente stai aggiornando <0>{0}0>"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
-msgstr "Stai attualmente aggiornando <0>{memberName}.0>"
+msgid "You are currently updating <0>{memberName}0>."
+msgstr "Stai aggiornando <0>{memberName}0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
-msgstr "Stai attualmente aggiornando <0>{organisationMemberName}.0>"
+msgid "You are currently updating <0>{organisationMemberName}0>."
+msgstr "Stai aggiornando <0>{organisationMemberName}0>."
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
msgid "You are currently updating the <0>{passkeyName}0> passkey."
@@ -10948,11 +11030,11 @@ msgstr "Non sei autorizzato a reimpostare l'autenticazione a due fattori per que
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "You can add fields manually in the editor."
-msgstr ""
+msgstr "Puoi aggiungere manualmente i campi nell'editor."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You can add recipients manually in the editor."
-msgstr ""
+msgstr "Puoi aggiungere manualmente i destinatari nell'editor."
#: packages/email/template-components/template-confirmation-email.tsx
msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
@@ -10972,16 +11054,16 @@ msgstr "Puoi abilitare l'accesso per consentire a tutti i membri dell'organizzaz
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "Puoi gestire qui le tue preferenze email"
+msgid "You can manage your email preferences here."
+msgstr "Qui puoi gestire le tue preferenze email."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
-msgstr ""
+msgstr "Puoi rilevare i campi solo nelle buste in bozza"
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "Puoi revocare l'accesso in qualsiasi momento nelle impostazioni del tuo team su Documenso <0>qui.0>"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr "Puoi revocare l'accesso in qualsiasi momento dalle impostazioni del team su Documenso <0>qui0>."
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11014,8 +11096,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "Non puoi eliminare un gruppo che ha un ruolo superiore al tuo."
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-msgid "You cannot delete this item because the document has been sent to recipients"
-msgstr "Non puoi eliminare questo elemento perché il documento è stato inviato ai destinatari"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr "Non puoi eliminare questo elemento perché il documento è stato inviato ai destinatari."
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11041,8 +11123,8 @@ msgstr "Non puoi caricare documenti in questo momento."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "Non puoi caricare PDF crittografati"
+msgid "You cannot upload encrypted PDFs."
+msgstr "Non puoi caricare PDF crittografati."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11053,8 +11135,8 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "Attualmente non hai accesso a nessun team all'interno di questa organizzazione. Si prega di contattare la tua organizzazione per richiedere l'accesso."
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
-msgstr "Non hai il permesso di creare un token per questo team"
+msgid "You do not have permission to create a token for this team."
+msgstr "Non hai l'autorizzazione per creare un token per questo team."
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgid "You don't manage billing for any organisations."
@@ -11123,8 +11205,8 @@ msgstr "Non hai ancora creato o ricevuto documenti. Per creare un documento cari
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You have reached the limit of the number of files per envelope"
-msgstr "Hai raggiunto il limite del numero di file per busta"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr "Hai raggiunto il numero massimo di file consentiti per busta."
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11279,10 +11361,14 @@ msgstr "Ora ti verrà richiesto di inserire un codice dalla tua app di autentica
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "Riceverai una copia del documento firmato via email non appena tutti avranno firmato."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "Sei un amministratore. Puoi abilitare subito le funzionalità di IA per questo team. Tutti i membri del team vedranno il rilevamento IA una volta abilitato."
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
-msgstr ""
+msgstr "Hai effettuato troppe richieste di rilevamento. Attendi un minuto prima di riprovare."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Your Account"
@@ -11337,6 +11423,10 @@ msgstr "Il tuo attuale piano è scaduto."
msgid "Your direct signing templates"
msgstr "I tuoi modelli di firma diretta"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "Il contenuto del tuo documento sarà inviato in modo sicuro al nostro provider di IA esclusivamente per il rilevamento e non verrà archiviato né utilizzato per l’addestramento."
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11372,14 +11462,14 @@ msgstr "Il tuo documento è stato duplicato correttamente."
msgid "Your document has been uploaded successfully."
msgstr "Il tuo documento è stato caricato correttamente."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Il tuo documento è stato caricato correttamente. Sarai reindirizzato alla pagina del modello."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Your document is processed securely using AI services that don't retain your data."
-msgstr ""
+msgstr "Il tuo documento viene elaborato in modo sicuro utilizzando servizi di IA che non conservano i tuoi dati."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
diff --git a/packages/lib/translations/ja/web.po b/packages/lib/translations/ja/web.po
index 90d61f530..4f3cd9521 100644
--- a/packages/lib/translations/ja/web.po
+++ b/packages/lib/translations/ja/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: ja\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2025-11-27 05:32\n"
+"PO-Revision-Date: 2025-12-15 02:39\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -68,7 +68,7 @@ msgstr "{0, plural, other {(# 文字超過)}}"
#. placeholder {2}: table.getFilteredSelectedRowModel().rows.length
#: packages/ui/primitives/data-table-pagination.tsx
msgid "{0, plural, one {{1} of # row selected.} other {{2} of # rows selected.}}"
-msgstr ""
+msgstr "{0, plural, other {{2} / # 行が選択されています。}}"
#. placeholder {0}: Math.abs(remaningLength)
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
@@ -101,6 +101,11 @@ msgstr "{0, plural, other {# 個のフィールド}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, other {# 個のフォルダ}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, other {AI 検出により # 件の受信者が追加されました。}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -151,11 +156,44 @@ msgstr "{0, plural, other {# 個の一致するフィールド}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, other {# 名の受信者}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, other {ページ {3}/{4} - # 個のフィールドが見つかりました}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, other {ページ {3}/{4} - # 人の受信者が見つかりました}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, other {受信者を追加しました}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, other {# 名の受信者の対応待ち}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, other {ドキュメント内で # 個のフィールドが見つかりました。}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, other {ドキュメント内で # 人の受信者が見つかりました。}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -200,11 +238,6 @@ msgstr "今月は {1} 件中 {0} 件の文書を残しています。"
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} が「{1}」を代表してドキュメント「{2}」の{recipientActionVerb}を依頼しています。"
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr ""
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -279,7 +312,7 @@ msgstr "{MAXIMUM_PASSKEYS, plural, other {# 個を超えるパスキーを保持
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}"
-msgstr ""
+msgstr "{maximumEnvelopeItemCount, plural, other {1 つの封筒にアップロードできるアイテムは # 件までです。}}"
#: packages/lib/utils/document-audit-logs.ts
msgid "{prefix} added a field"
@@ -514,39 +547,39 @@ msgstr "<0>{organisationName}0> が、あなたの現在の Documenso アカ
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> さんから、この文書の承認依頼が届いています。"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> さんから、この文書への補助依頼が届いています。"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> さんから、この文書への署名依頼が届いています。"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> さんから、この文書の閲覧招待が届いています。"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> さんが、\"{0}\" を代表してこの文書の承認を依頼しています。"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> さんが、\"{0}\" を代表してこの文書への補助を依頼しています。"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> さんが、\"{0}\" を代表してこの文書への署名を依頼しています。"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> さんが、\"{0}\" を代表してこの文書の閲覧を招待しています。"
#: packages/email/templates/confirm-team-email.tsx
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
@@ -558,7 +591,7 @@ msgstr "<0>アカウント管理:0> アカウント設定、権限、各種設
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Admins only0> - Only admins can access and view the document"
-msgstr ""
+msgstr "<0>管理者のみ0> - 管理者だけがこの文書にアクセスして閲覧できます"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Data access:0> Access all data associated with your account"
@@ -579,7 +612,7 @@ msgstr "<0>イベント:0> すべて"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Everyone0> - Everyone can access and view the document"
-msgstr ""
+msgstr "<0>全員0> - すべてのユーザーがこの文書にアクセスして閲覧できます"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Full account access:0> View all your profile information, settings, and activity"
@@ -591,7 +624,7 @@ msgstr "<0>認証方法を継承0> - 「一般設定」ステップで設定
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Managers and above0> - Only managers and above can access and view the document"
-msgstr ""
+msgstr "<0>マネージャー以上0> - ドキュメントにアクセスして表示できるのはマネージャー以上のみです。"
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "<0>No restrictions0> - No authentication required"
@@ -851,9 +884,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "Documenso で {0} によって、あなたのメールアドレスを使用するリクエストが開始されました"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "Documenso から送信されたリクエストであることを検証できるよう、お客様の URL に送信されるシークレットです"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Documenso から送信されたリクエストであることを検証できるよう、お客様の URL に送信されるシークレットです。"
@@ -951,11 +981,11 @@ msgstr "アカウントを有効化"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account link declined"
-msgstr ""
+msgstr "アカウント連携が拒否されました"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account linked successfully"
-msgstr ""
+msgstr "アカウントが正常に連携されました"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account Linking Request"
@@ -1017,7 +1047,7 @@ msgstr "有効"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Active"
-msgstr ""
+msgstr "有効"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -1114,7 +1144,7 @@ msgstr "メールドメインを追加"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Add fields"
-msgstr ""
+msgstr "フィールドを追加"
#: apps/remix/app/components/general/document/document-edit-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
@@ -1182,7 +1212,7 @@ msgstr "プレースホルダーを追加"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Add recipients"
-msgstr ""
+msgstr "受信者を追加"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Add Recipients"
@@ -1286,7 +1316,11 @@ msgstr "送信後、自動的にドキュメントが生成され、「ドキュ
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "AI Features"
-msgstr ""
+msgstr "AI 機能"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "チームではAI機能が無効になっています。チームオーナーまたは組織オーナーに有効化を依頼してください。"
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -1384,7 +1418,7 @@ msgstr "生体認証、パスワードマネージャー、ハードウェアキ
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Almost done"
-msgstr ""
+msgstr "ほぼ完了しました"
#: apps/remix/app/components/forms/signup.tsx
msgid "Already have an account? <0>Sign in instead0>"
@@ -1478,7 +1512,7 @@ msgstr "ドキュメントの自動署名中にエラーが発生しました。
#: apps/remix/app/components/general/document-signing/document-signing-form.tsx
msgid "An error occurred while completing the document. Please try again."
-msgstr ""
+msgstr "ドキュメントの完了処理中にエラーが発生しました。もう一度お試しください。"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "An error occurred while creating document from template."
@@ -1526,7 +1560,7 @@ msgstr "テンプレートの移動中にエラーが発生しました。"
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "An error occurred while rejecting the document. Please try again."
-msgstr ""
+msgstr "ドキュメントの却下処理中にエラーが発生しました。もう一度お試しください。"
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
#: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx
@@ -1692,11 +1726,11 @@ msgstr "フォルダの移動中に不明なエラーが発生しました。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Analyzing page layout"
-msgstr ""
+msgstr "ページレイアウトを分析しています"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Analyzing pages"
-msgstr ""
+msgstr "ページを分析しています"
#: apps/remix/app/routes/_authenticated+/inbox.tsx
msgid "Any documents that you have been invited to will appear here"
@@ -2265,6 +2299,10 @@ msgstr "グラフ"
msgid "Checkbox"
msgstr "チェックボックス"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "チェックボックスのオプション"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "チェックボックス設定"
@@ -2368,6 +2406,7 @@ msgstr "クライアントシークレット"
msgid "Client secret is required"
msgstr "クライアントシークレットは必須です"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2380,7 +2419,6 @@ msgstr "クライアントシークレットは必須です"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2391,7 +2429,9 @@ msgstr "クライアントシークレットは必須です"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "閉じる"
@@ -2584,7 +2624,7 @@ msgstr "コンテンツ"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Context"
-msgstr ""
+msgstr "コンテキスト"
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
@@ -2667,13 +2707,13 @@ msgstr "コピーしました"
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field"
-msgstr ""
+msgstr "フィールドをコピーしました"
#: apps/remix/app/components/embed/authoring/configure-fields-view.tsx
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field to clipboard"
-msgstr ""
+msgstr "フィールドをクリップボードにコピーしました"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
@@ -3020,7 +3060,7 @@ msgstr "日付設定"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "David is the Employee, Lucas is the Manager"
-msgstr ""
+msgstr "David は従業員で、Lucas はマネージャーです"
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -3069,6 +3109,10 @@ msgstr "既定のタイムゾーン"
msgid "Default Value"
msgstr "既定値"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "delete"
@@ -3234,48 +3278,48 @@ msgstr "詳細"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect"
-msgstr ""
+msgstr "検出"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detect fields"
-msgstr ""
+msgstr "フィールドを検出"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect recipients"
-msgstr ""
+msgstr "受信者を検出"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
msgid "Detect recipients with AI"
-msgstr ""
+msgstr "AI で受信者を検出"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Detect with AI"
-msgstr ""
+msgstr "AI で検出"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detected fields"
-msgstr ""
+msgstr "検出されたフィールド"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detected recipients"
-msgstr ""
+msgstr "検出された受信者"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting fields"
-msgstr ""
+msgstr "フィールドを検出しています"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detecting recipients"
-msgstr ""
+msgstr "受信者を検出しています"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting signature areas"
-msgstr ""
+msgstr "署名欄を検出しています"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detection failed"
-msgstr ""
+msgstr "検出に失敗しました"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Developer Mode"
@@ -3288,8 +3332,8 @@ msgid "Device"
msgstr "デバイス"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "パスワードの変更をリクエストしていませんか?アカウントの安全確保をお手伝いしますので、<0>お問い合わせ0>ください。"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr "パスワード変更をリクエストしていませんか?アカウントの安全確保をお手伝いしますので、<0>こちらからお問い合わせください0>。"
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3632,6 +3676,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "ドキュメントが開かれました"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "文書は保留中です"
@@ -3830,6 +3879,11 @@ msgstr "ドメイン名"
msgid "Don't have an account? <0>Sign up0>"
msgstr "アカウントをお持ちでないですか?<0>サインアップ0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "転送しない(すべてのドキュメントを削除)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3968,6 +4022,7 @@ msgstr "例: 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4184,9 +4239,18 @@ msgstr "アカウントを有効化"
msgid "Enable Account"
msgstr "アカウントを有効化"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "AI検出を有効にする"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "AI機能を有効にする"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
-msgstr ""
+msgstr "自動受信者検出などの AI 搭載機能を有効にします。有効にすると、ドキュメントの内容が AI プロバイダーに送信されます。学習目的でデータを保持しないプロバイダーのみを使用し、利用可能な場合は欧州地域を優先します。"
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
msgid "Enable Authenticator App"
@@ -4224,6 +4288,10 @@ msgstr "署名順序を有効にする"
msgid "Enable SSO portal"
msgstr "SSO ポータルを有効にする"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4422,11 +4490,11 @@ msgstr "エラー"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error declining account link"
-msgstr ""
+msgstr "アカウント連携の拒否時にエラーが発生しました"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error linking account"
-msgstr ""
+msgstr "アカウント連携時にエラーが発生しました"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "Error uploading file"
@@ -4484,7 +4552,7 @@ msgstr "外部 ID"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Extracting contact details"
-msgstr ""
+msgstr "連絡先情報を抽出しています"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -4493,7 +4561,7 @@ msgstr "失敗"
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
msgid "Failed to complete the document. Please try again."
-msgstr ""
+msgstr "ドキュメントの完了に失敗しました。もう一度お試しください。"
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Failed to create folder"
@@ -4565,7 +4633,7 @@ msgstr "Webhook の更新に失敗しました"
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
msgid "Failed to upload CSV. Please check the file format and try again."
-msgstr ""
+msgstr "CSV のアップロードに失敗しました。ファイル形式を確認してから、もう一度お試しください。"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Failed: {failedCount}"
@@ -4725,13 +4793,13 @@ msgstr "パスワードをお忘れですか?"
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
msgctxt "Plan price"
msgid "Free"
-msgstr ""
+msgstr "無料"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Free"
-msgstr ""
+msgstr "無料"
#: packages/lib/utils/fields.ts
#: packages/ui/primitives/document-flow/types.ts
@@ -4822,10 +4890,26 @@ msgstr "ホームへ"
msgid "Go to document"
msgstr "ドキュメントへ移動"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "最初のページへ移動"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "最後のページへ移動"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "次のページへ移動"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "所有者ページへ移動"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "前のページへ移動"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "チームへ移動"
@@ -4883,7 +4967,7 @@ msgstr "他の署名者のためにドキュメントの完了を手伝います
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Help the AI assign fields to the right recipients."
-msgstr ""
+msgstr "AI が正しい受信者にフィールドを割り当てられるように支援します。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains._index.tsx
msgid "Here you can add email domains to your organisation."
@@ -4906,8 +4990,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "ここでは組織のブランディング設定を行えます。チームはこれらの設定をデフォルトで継承します。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "ここではチームのブランディング設定を行えます。"
+msgid "Here you can set branding preferences for your team."
+msgstr "ここでは、チーム用のブランディング設定を行うことができます。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4922,12 +5006,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "ここでチームの優先設定と既定値を設定できます。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "ここでは全体のブランディング設定を行えます。"
+msgid "Here you can set your general branding preferences."
+msgstr "ここでは、全般的なブランディング設定を行うことができます。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "ここでは全体的なドキュメント設定を行えます。"
+msgid "Here you can set your general document preferences."
+msgstr "ここでは、ドキュメント全般の設定を行うことができます。"
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5020,11 +5104,11 @@ msgstr "ID をクリップボードにコピーしました"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Identifying input fields"
-msgstr ""
+msgstr "入力フィールドを特定しています"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Identifying recipients"
-msgstr ""
+msgstr "受信者を特定しています"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
msgid "If there is any issue with your subscription, please contact us at <0>{SUPPORT_EMAIL}0>."
@@ -5053,7 +5137,7 @@ msgstr "重要: これが意味すること"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Inactive"
-msgstr ""
+msgstr "無効"
#: apps/remix/app/components/general/app-nav-mobile.tsx
#: apps/remix/app/components/general/app-nav-mobile.tsx
@@ -5092,6 +5176,7 @@ msgstr "認証方法を継承"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5477,13 +5562,14 @@ msgstr "ログ"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Looking for form fields"
-msgstr ""
+msgstr "フォームフィールドを探しています"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Looking for signature fields"
-msgstr ""
+msgstr "署名フィールドを探しています"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5544,6 +5630,10 @@ msgstr "リンク済みアカウントを管理"
msgid "Manage organisation"
msgstr "組織を管理"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "組織を管理"
@@ -5636,7 +5726,7 @@ msgstr "マネージャー以上"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Mapping fields to recipients"
-msgstr ""
+msgstr "フィールドを受信者に対応付けています"
#: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx
msgid "Mark as viewed"
@@ -5707,15 +5797,15 @@ msgstr "メンバー登録日"
msgid "Members"
msgstr "メンバー"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "メッセージ"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "メッセージ <0>(任意)0>"
@@ -5865,10 +5955,6 @@ msgstr "有効期限なし"
msgid "New Password"
msgstr "新しいパスワード"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "新しいテンプレート"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5894,6 +5980,7 @@ msgstr "次の受信者の名前"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "いいえ"
@@ -5909,11 +5996,11 @@ msgstr "文書が見つかりません"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No email detected"
-msgstr ""
+msgstr "メールアドレスが検出されませんでした"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "No fields were detected in your document."
-msgstr ""
+msgstr "ドキュメント内でフィールドが検出されませんでした。"
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
@@ -5961,7 +6048,7 @@ msgstr "受信者なし"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No recipients were detected in your document."
-msgstr ""
+msgstr "ドキュメント内で受信者が検出されませんでした。"
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
#: packages/ui/primitives/recipient-selector.tsx
@@ -6101,8 +6188,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "QR コードをスキャンするかコードを手動で入力したら、認証アプリに表示されるコードを下に入力してください。"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "DNS レコードを更新すると、反映されるまで最大 48 時間かかる場合があります。DNS の反映が完了したら、戻って「Sync ドメイン」ボタンを押してください。"
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "DNS レコードを更新した後、反映が完了するまで最大 48 時間かかる場合があります。DNS の伝播が完了したら、再度ここに戻り、\"Sync\" domains ボタンを押してください。"
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6136,6 +6223,10 @@ msgstr "PDFファイルのみアップロードできます"
msgid "Oops! Something went wrong."
msgstr "問題が発生しました。"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "メニューを開く"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "開封済み"
@@ -6329,20 +6420,6 @@ msgstr "所有権を {organisationMemberName} に移転しました。"
msgid "Page {0} of {1}"
msgstr "ページ {0} / {1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr ""
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr ""
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6352,7 +6429,7 @@ msgstr "ページ {0} / {numPages}"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
msgctxt "Subscription status"
msgid "Paid"
-msgstr ""
+msgstr "有料"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
@@ -6434,7 +6511,7 @@ msgstr "パスワードを更新しました。"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Past Due"
-msgstr ""
+msgstr "支払い遅延"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
@@ -6688,10 +6765,6 @@ msgstr "別のドメインをお試しください。"
msgid "Please try again and make sure you enter the correct email address."
msgstr "もう一度お試しいただき、正しいメールアドレスが入力されているか確認してください。"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "後でもう一度お試しください。"
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6873,7 +6946,7 @@ msgstr "<0>署名に関する開示0>をすべて読む。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Reading your document"
-msgstr ""
+msgstr "ドキュメントを読み込んでいます"
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
msgid "Ready"
@@ -6936,7 +7009,7 @@ msgstr "受信者"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
msgid "Recipient {0}"
-msgstr ""
+msgstr "受信者 {0}"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/components/recipient/recipient-action-auth-select.tsx
@@ -6969,10 +7042,6 @@ msgstr "受信者を更新しました"
msgid "Recipients"
msgstr "受信者"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr ""
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "受信者は文書のコピーを保持したままです"
@@ -7122,7 +7191,7 @@ msgstr "組織メンバーを削除"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
-msgstr ""
+msgstr "受信者を削除"
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
msgid "Remove team email"
@@ -7146,8 +7215,8 @@ msgstr "返信先メール"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "返信先メール"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "返信先メールアドレス <0>(任意)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7284,6 +7353,11 @@ msgstr "再試行"
msgid "Return"
msgstr "戻る"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "Documenso のサインインページへ戻る"
@@ -7450,6 +7524,7 @@ msgid "See the background jobs tab for the status"
msgstr "ステータスはバックグラウンドジョブのタブで確認できます"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8071,7 +8146,7 @@ msgstr "サイト設定"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Skip"
-msgstr ""
+msgstr "スキップ"
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -8089,7 +8164,6 @@ msgstr "一部の署名者に署名フィールドが割り当てられていま
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8134,11 +8208,11 @@ msgstr "<0>{0}0> のメールアドレスの認証中に問題が発生しま
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Something went wrong while detecting fields."
-msgstr ""
+msgstr "フィールドの検出中に問題が発生しました。"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Something went wrong while detecting recipients."
-msgstr ""
+msgstr "受信者の検出中に問題が発生しました。"
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
@@ -8252,14 +8326,14 @@ msgstr "Stripe 顧客が正常に作成されました"
msgid "Stripe Customer ID"
msgstr "Stripe 顧客 ID"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "件名"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "件名 <0>(任意)0>"
@@ -8580,7 +8654,6 @@ msgstr "この組織グループが現在割り当てられているチーム"
msgid "Template"
msgstr "テンプレート"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: packages/ui/primitives/document-upload-button.tsx
msgid "Template (Legacy)"
msgstr "テンプレート(レガシー)"
@@ -8593,7 +8666,7 @@ msgstr "テンプレートを作成しました"
msgid "Template deleted"
msgstr "テンプレートを削除しました"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "テンプレート文書をアップロードしました"
@@ -8655,10 +8728,6 @@ msgstr "テンプレートをアップロードしました"
msgid "Templates"
msgstr "テンプレート"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "テンプレートを使用すると、受信者やフィールドがあらかじめ設定された文書をすばやく作成できます。"
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "テスト"
@@ -8765,7 +8834,7 @@ msgstr "このメールアドレスの表示名です"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
-msgstr ""
+msgstr "ドキュメントは正常に削除されました。"
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
msgid "The document has been moved successfully."
@@ -8773,7 +8842,7 @@ msgstr "ドキュメントは正常に移動されました。"
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "The document has been successfully rejected."
-msgstr ""
+msgstr "ドキュメントは正常に却下されました。"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "The document is already saved and cannot be changed."
@@ -8792,6 +8861,12 @@ msgstr "この却下内容について、ドキュメントの所有者に通知
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "お客様の決定について、ドキュメントの所有者に通知しました。必要に応じて、追加の手順について連絡がある場合があります。"
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "文書は作成されましたが、受信者に送信できませんでした。"
@@ -8826,8 +8901,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
msgstr "お探しのメールドメインは削除されたか、名前が変更されたか、もともと存在しなかった可能性があります。"
#: apps/remix/app/components/forms/signin.tsx
-msgid "The email or password provided is incorrect"
-msgstr "メールアドレスまたはパスワードが正しくありません"
+msgid "The email or password provided is incorrect."
+msgstr "入力されたメールアドレスまたはパスワードが正しくありません。"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -8860,7 +8935,7 @@ msgstr "次のエラーが発生しました。"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following recipients require an email address:"
-msgstr ""
+msgstr "次の受信者にはメールアドレスが必要です:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following signers are missing signature fields:"
@@ -9025,8 +9100,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "パスワードリセットに使用したトークンは、有効期限が切れているか存在しません。まだパスワードをお忘れの場合は、新しいリセットリンクをリクエストしてください。"
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "入力された二要素認証コードが正しくありません"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr "入力された二要素認証コードが正しくありません。"
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9051,7 +9126,7 @@ msgstr "ユーザーの二要素認証を正常にリセットしました。"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "The visibility of the document to the recipient."
-msgstr ""
+msgstr "受信者に対するドキュメントの表示範囲です。"
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
@@ -9122,7 +9197,7 @@ msgstr "この操作は元に戻すことができますが、アカウントに
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "This can take a minute or two depending on the size of your document."
-msgstr ""
+msgstr "ドキュメントのサイズによっては、1~2 分かかる場合があります。"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
msgid "This claim is locked and cannot be deleted."
@@ -9196,7 +9271,7 @@ msgid "This document was created using a direct link."
msgstr "この文書はダイレクトリンクから作成されました。"
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
+msgid "This document was sent using <0>Documenso0>."
msgstr "このドキュメントは <0>Documenso0> を使用して送信されました。"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
@@ -9502,7 +9577,7 @@ msgstr "トークン名"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Too many requests"
-msgstr ""
+msgstr "リクエストが多すぎます"
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
msgid "Top"
@@ -9528,6 +9603,10 @@ msgstr "サインアップした署名者総数"
msgid "Total Users"
msgstr "ユーザー総数"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "ドキュメントを別のチームに転送する"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9538,7 +9617,11 @@ msgstr "トリガー"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Try again"
-msgstr ""
+msgstr "再試行"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "AI検出をオンにすると、ドキュメント内の受信者とフィールドを自動的に検出できます。AIプロバイダーは、トレーニング目的でお客様のデータを保持しません。"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
@@ -9686,6 +9769,10 @@ msgstr "権限がありません"
msgid "Uncompleted"
msgstr "未完了"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "元に戻す"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -9704,7 +9791,7 @@ msgstr "不明なエラーが発生しました"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Unknown name"
-msgstr ""
+msgstr "不明な名前"
#: apps/remix/app/components/tables/admin-claims-table.tsx
msgid "Unlimited"
@@ -10298,8 +10385,8 @@ msgstr "あなたの順番待ち"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "こんなスタイリッシュな署名用リンクを送りたいですか?<0>Documenso をチェックしてみてください。0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr "このようなスマートな署名リンクを送りたいですか?<0>Documenso をチェックしてみてください0>。"
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10334,6 +10421,10 @@ msgstr "現在、このパスキーは更新できません。後でもう一度
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "Stripe 顧客を作成できませんでした。もう一度お試しください。"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "現在AI機能を有効にできませんでした。もう一度お試しください。"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "グループを更新できませんでした。もう一度お試しください。"
@@ -10417,7 +10508,7 @@ msgstr "アカウントの削除中に不明なエラーが発生しました。
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "We encountered an unknown error while attempting to delete your document. Please try again later."
-msgstr ""
+msgstr "ドキュメントの削除を試行中に不明なエラーが発生しました。後でもう一度お試しください。"
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
msgid "We encountered an unknown error while attempting to disable access."
@@ -10534,16 +10625,6 @@ msgstr "チームのメールアドレス更新中に不明なエラーが発生
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "プロフィールの更新中に不明なエラーが発生しました。後でもう一度お試しください。"
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr ""
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr ""
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "確認用のメールを送信しました。"
@@ -10637,11 +10718,11 @@ msgstr "できるだけ早くメールでご連絡いたします。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "We'll scan your document to find form fields like signature lines, text inputs, checkboxes, and more. Detected fields will be suggested for you to review."
-msgstr ""
+msgstr "署名欄、テキスト入力、チェックボックスなどのフォームフィールドを見つけるためにドキュメントをスキャンします。検出されたフィールドは、確認用として提案されます。"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "We'll scan your document to find signature fields and identify who needs to sign. Detected recipients will be suggested for you to review."
-msgstr ""
+msgstr "署名フィールドを見つけて、誰が署名する必要があるかを特定するためにドキュメントをスキャンします。検出された受信者は、確認用として提案されます。"
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
msgid "We'll send a 6-digit code to your email"
@@ -10793,6 +10874,7 @@ msgstr "年額"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "はい"
@@ -10905,12 +10987,12 @@ msgid "You are currently updating <0>{0}0>"
msgstr "現在、<0>{0}0> を更新しています"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
+msgid "You are currently updating <0>{memberName}0>."
msgstr "現在、<0>{memberName}0> を更新しています。"
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
+msgid "You are currently updating <0>{organisationMemberName}0>."
msgstr "現在、<0>{organisationMemberName}0> を更新しています。"
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -10948,11 +11030,11 @@ msgstr "このユーザーの二要素認証をリセットする権限があり
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "You can add fields manually in the editor."
-msgstr ""
+msgstr "エディターでフィールドを手動で追加できます。"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You can add recipients manually in the editor."
-msgstr ""
+msgstr "エディターで受信者を手動で追加できます。"
#: packages/email/template-components/template-confirmation-email.tsx
msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
@@ -10972,16 +11054,16 @@ msgstr "このチームに対して、すべての組織メンバーへのデフ
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "ここでメール設定を管理できます"
+msgid "You can manage your email preferences here."
+msgstr "ここでメール通知の設定を管理できます。"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
-msgstr ""
+msgstr "ドラフトの封筒でのみフィールドを検出できます"
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "Documenso のチーム設定からいつでもアクセス権を取り消すことができます。<0>こちら0>。"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr "Documenso のチーム設定から、いつでもアクセス権を取り消すことができます。<0>こちら0>。"
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11014,8 +11096,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "自分より権限の高いロールを持つグループは削除できません。"
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-msgid "You cannot delete this item because the document has been sent to recipients"
-msgstr "この文書は受信者に送信済みのため、この項目は削除できません"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr "このドキュメントはすでに受信者に送信されているため、この項目を削除することはできません。"
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11041,8 +11123,8 @@ msgstr "現在、ドキュメントをアップロードすることはできま
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "暗号化された PDF はアップロードできません"
+msgid "You cannot upload encrypted PDFs."
+msgstr "暗号化された PDF はアップロードできません。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11053,7 +11135,7 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "現在、この組織内のいずれのチームにもアクセスできません。組織に連絡してアクセスをリクエストしてください。"
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
+msgid "You do not have permission to create a token for this team."
msgstr "このチームのトークンを作成する権限がありません。"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
@@ -11123,8 +11205,8 @@ msgstr "まだ文書を作成または受信していません。文書を作成
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You have reached the limit of the number of files per envelope"
-msgstr "この封筒でアップロードできるファイル数の上限に達しました"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr "1つの封筒にアップロードできるファイル数の上限に達しました。"
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11279,10 +11361,14 @@ msgstr "今後、サインイン時には認証アプリのコード入力が必
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "全員の署名が完了すると、署名済みドキュメントのコピーがメールで送信されます。"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "あなたは管理者です。このチーム向けのAI機能をすぐに有効にできます。有効化されると、チームの全員にAI検出が表示されるようになります。"
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
-msgstr ""
+msgstr "検出リクエストが多すぎます。1 分ほど待ってから、もう一度お試しください。"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Your Account"
@@ -11337,6 +11423,10 @@ msgstr "現在のプランは支払いが滞っています。"
msgid "Your direct signing templates"
msgstr "あなたのダイレクト署名テンプレート"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "ドキュメントの内容は、検出のためだけに安全な方法で当社のAIプロバイダーに送信され、保存されたり学習に利用されたりすることはありません。"
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11372,14 +11462,14 @@ msgstr "文書を正常に複製しました。"
msgid "Your document has been uploaded successfully."
msgstr "文書を正常にアップロードしました。"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "文書を正常にアップロードしました。テンプレートページにリダイレクトされます。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Your document is processed securely using AI services that don't retain your data."
-msgstr ""
+msgstr "ドキュメントは、データを保持しない AI サービスを使用して安全に処理されます。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
diff --git a/packages/lib/translations/ko/web.po b/packages/lib/translations/ko/web.po
index aca3cc35f..495dcf791 100644
--- a/packages/lib/translations/ko/web.po
+++ b/packages/lib/translations/ko/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2025-11-27 05:32\n"
+"PO-Revision-Date: 2025-12-15 02:39\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -68,7 +68,7 @@ msgstr "{0, plural, other {(#자 초과)}}"
#. placeholder {2}: table.getFilteredSelectedRowModel().rows.length
#: packages/ui/primitives/data-table-pagination.tsx
msgid "{0, plural, one {{1} of # row selected.} other {{2} of # rows selected.}}"
-msgstr ""
+msgstr "{0, plural, other {{2} / #개 행이 선택되었습니다.}}"
#. placeholder {0}: Math.abs(remaningLength)
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
@@ -101,6 +101,11 @@ msgstr "{0, plural, other {#개의 필드}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, other {폴더 #개}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, other {AI 감지에서 #명의 수신자가 추가되었습니다.}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -151,11 +156,44 @@ msgstr "{0, plural, other {#개의 일치하는 필드}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, other {#명 수신자}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, other {페이지 {1}/{2} - 필드 #개 발견됨}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, other {페이지 {1}/{2} - 수신자 #명 발견됨}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, other {수신자 추가됨}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, other {#명의 수신자 대기 중}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, other {문서에서 필드 #개를 발견했습니다.}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, other {문서에서 수신자 #명을 발견했습니다.}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -200,11 +238,6 @@ msgstr "이번 달 남은 문서 {1}개 중 {0}개."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0}이(가) \"{1}\"을(를) 대신하여 \"{2}\" 문서에 대해 귀하께 {recipientActionVerb}하도록 초대했습니다."
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr ""
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -279,7 +312,7 @@ msgstr "{MAXIMUM_PASSKEYS, plural, other {패스키는 #개를 초과하여 가
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}"
-msgstr ""
+msgstr "{maximumEnvelopeItemCount, plural, other {하나의 봉투에는 최대 #개의 항목만 업로드할 수 있습니다.}}"
#: packages/lib/utils/document-audit-logs.ts
msgid "{prefix} added a field"
@@ -514,39 +547,39 @@ msgstr "<0>{organisationName}0>에서 귀하의 기존 Documenso 계정을 조
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 님이 이 문서를 승인해 달라고 초대했습니다."
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 님이 이 문서를 처리하는 데 참여해 달라고 초대했습니다."
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 님이 이 문서에 서명해 달라고 초대했습니다."
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 님이 이 문서를 열람해 달라고 초대했습니다."
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 님이 \"{0}\"을(를) 대신하여 이 문서를 승인해 달라고 초대했습니다."
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 님이 \"{0}\"을(를) 대신하여 이 문서를 처리하는 데 참여해 달라고 초대했습니다."
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 님이 \"{0}\"을(를) 대신하여 이 문서에 서명해 달라고 초대했습니다."
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 님이 \"{0}\"을(를) 대신하여 이 문서를 열람해 달라고 초대했습니다."
#: packages/email/templates/confirm-team-email.tsx
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
@@ -558,7 +591,7 @@ msgstr "<0>계정 관리:0> 계정 설정, 권한 및 기본 설정 변경"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Admins only0> - Only admins can access and view the document"
-msgstr ""
+msgstr "<0>관리자 전용0> - 관리자만 이 문서에 접근하고 열람할 수 있습니다."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Data access:0> Access all data associated with your account"
@@ -579,7 +612,7 @@ msgstr "<0>이벤트:0> 전체"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Everyone0> - Everyone can access and view the document"
-msgstr ""
+msgstr "<0>모든 사용자0> - 모든 사용자가 이 문서에 접근하고 열람할 수 있습니다."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Full account access:0> View all your profile information, settings, and activity"
@@ -591,7 +624,7 @@ msgstr "<0>인증 방식 상속0> - \"일반 설정\" 단계에서 구성한
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Managers and above0> - Only managers and above can access and view the document"
-msgstr ""
+msgstr "<0>관리자 이상0> - 관리자 이상만 문서에 접근하고 열람할 수 있습니다."
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "<0>No restrictions0> - No authentication required"
@@ -851,9 +884,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "Documenso에서 {0}이(가) 귀하의 이메일 사용을 요청했습니다."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "Documenso에서 보낸 요청인지 확인할 수 있도록, 귀하의 URL로 전송되는 비밀 값입니다."
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Documenso에서 보낸 요청인지 확인할 수 있도록, 귀하의 URL로 전송되는 비밀 값입니다."
@@ -951,11 +981,11 @@ msgstr "계정 활성화됨"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account link declined"
-msgstr ""
+msgstr "계정 연결이 거부되었습니다."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account linked successfully"
-msgstr ""
+msgstr "계정이 성공적으로 연결되었습니다."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account Linking Request"
@@ -1017,7 +1047,7 @@ msgstr "활성"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Active"
-msgstr ""
+msgstr "활성"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -1114,7 +1144,7 @@ msgstr "이메일 도메인 추가"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Add fields"
-msgstr ""
+msgstr "필드 추가"
#: apps/remix/app/components/general/document/document-edit-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
@@ -1182,7 +1212,7 @@ msgstr "플레이스홀더 추가"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Add recipients"
-msgstr ""
+msgstr "수신자 추가"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Add Recipients"
@@ -1286,7 +1316,11 @@ msgstr "제출이 완료되면 문서가 자동으로 생성되어 문서 페이
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "AI Features"
-msgstr ""
+msgstr "AI 기능"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "AI 기능이 현재 팀에서 비활성화되어 있습니다. 팀 소유자 또는 조직 소유자에게 AI 기능을 활성화해 달라고 요청하세요."
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -1384,7 +1418,7 @@ msgstr "생체 인증, 비밀번호 관리자, 하드웨어 키 등을 사용해
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Almost done"
-msgstr ""
+msgstr "거의 완료되었습니다."
#: apps/remix/app/components/forms/signup.tsx
msgid "Already have an account? <0>Sign in instead0>"
@@ -1478,7 +1512,7 @@ msgstr "문서를 자동 서명하는 동안 오류가 발생하여 일부 필
#: apps/remix/app/components/general/document-signing/document-signing-form.tsx
msgid "An error occurred while completing the document. Please try again."
-msgstr ""
+msgstr "문서를 완료하는 중 오류가 발생했습니다. 다시 시도해 주세요."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "An error occurred while creating document from template."
@@ -1526,7 +1560,7 @@ msgstr "템플릿을 이동하는 중 오류가 발생했습니다."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "An error occurred while rejecting the document. Please try again."
-msgstr ""
+msgstr "문서를 거부하는 중 오류가 발생했습니다. 다시 시도해 주세요."
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
#: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx
@@ -1692,11 +1726,11 @@ msgstr "폴더를 이동하는 동안 알 수 없는 오류가 발생했습니
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Analyzing page layout"
-msgstr ""
+msgstr "페이지 레이아웃 분석 중"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Analyzing pages"
-msgstr ""
+msgstr "페이지 분석 중"
#: apps/remix/app/routes/_authenticated+/inbox.tsx
msgid "Any documents that you have been invited to will appear here"
@@ -2265,6 +2299,10 @@ msgstr "차트"
msgid "Checkbox"
msgstr "체크박스"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "체크박스 옵션"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "체크박스 설정"
@@ -2368,6 +2406,7 @@ msgstr "클라이언트 시크릿"
msgid "Client secret is required"
msgstr "클라이언트 시크릿은 필수입니다."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2380,7 +2419,6 @@ msgstr "클라이언트 시크릿은 필수입니다."
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2391,7 +2429,9 @@ msgstr "클라이언트 시크릿은 필수입니다."
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "닫기"
@@ -2584,7 +2624,7 @@ msgstr "콘텐츠"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Context"
-msgstr ""
+msgstr "컨텍스트"
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
@@ -2667,13 +2707,13 @@ msgstr "복사됨"
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field"
-msgstr ""
+msgstr "필드를 복사했습니다."
#: apps/remix/app/components/embed/authoring/configure-fields-view.tsx
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field to clipboard"
-msgstr ""
+msgstr "필드를 클립보드에 복사했습니다."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
@@ -3020,7 +3060,7 @@ msgstr "날짜 설정"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "David is the Employee, Lucas is the Manager"
-msgstr ""
+msgstr "David는 직원이고, Lucas는 관리자입니다."
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -3069,6 +3109,10 @@ msgstr "기본 시간대"
msgid "Default Value"
msgstr "기본값"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "delete"
@@ -3234,48 +3278,48 @@ msgstr "세부 정보"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect"
-msgstr ""
+msgstr "감지"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detect fields"
-msgstr ""
+msgstr "필드 감지"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect recipients"
-msgstr ""
+msgstr "수신자 감지"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
msgid "Detect recipients with AI"
-msgstr ""
+msgstr "AI로 수신자 감지"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Detect with AI"
-msgstr ""
+msgstr "AI로 감지"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detected fields"
-msgstr ""
+msgstr "감지된 필드"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detected recipients"
-msgstr ""
+msgstr "감지된 수신자"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting fields"
-msgstr ""
+msgstr "필드 감지 중"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detecting recipients"
-msgstr ""
+msgstr "수신자 감지 중"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting signature areas"
-msgstr ""
+msgstr "서명 영역 감지 중"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detection failed"
-msgstr ""
+msgstr "감지 실패"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Developer Mode"
@@ -3288,8 +3332,8 @@ msgid "Device"
msgstr "디바이스"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "비밀번호 변경을 요청하지 않으셨나요? 계정 보안을 도와드리겠습니다. <0>문의해 주세요.0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr "비밀번호 변경을 요청하지 않으셨나요? 계정을 안전하게 보호하실 수 있도록 도와드리겠습니다. <0>문의하기0>만 해 주세요."
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3632,6 +3676,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "문서가 열렸습니다."
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "문서 보류 중"
@@ -3830,6 +3879,11 @@ msgstr "도메인 이름"
msgid "Don't have an account? <0>Sign up0>"
msgstr "계정이 없으신가요? <0>가입하기0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "전송하지 않음(모든 문서 삭제)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3968,6 +4022,7 @@ msgstr "예: 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4184,9 +4239,18 @@ msgstr "계정 활성화"
msgid "Enable Account"
msgstr "계정 활성화"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "AI 감지 활성화"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "AI 기능 활성화"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
-msgstr ""
+msgstr "자동 수신자 감지와 같은 AI 기반 기능을 활성화합니다. 활성화하면 문서 내용이 AI 제공업체로 전송됩니다. 당사는 학습용으로 데이터를 보관하지 않는 제공업체만 사용하며, 가능한 경우 유럽 리전을 우선적으로 사용합니다."
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
msgid "Enable Authenticator App"
@@ -4224,6 +4288,10 @@ msgstr "서명 순서 활성화"
msgid "Enable SSO portal"
msgstr "SSO 포털 활성화"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4422,11 +4490,11 @@ msgstr "오류"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error declining account link"
-msgstr ""
+msgstr "계정 연결 거부 중 오류가 발생했습니다."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error linking account"
-msgstr ""
+msgstr "계정 연결 중 오류가 발생했습니다."
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "Error uploading file"
@@ -4484,7 +4552,7 @@ msgstr "외부 ID"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Extracting contact details"
-msgstr ""
+msgstr "연락처 정보 추출 중"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -4493,7 +4561,7 @@ msgstr "실패"
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
msgid "Failed to complete the document. Please try again."
-msgstr ""
+msgstr "문서를 완료하지 못했습니다. 다시 시도해 주세요."
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Failed to create folder"
@@ -4565,7 +4633,7 @@ msgstr "웹훅을 업데이트하지 못했습니다"
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
msgid "Failed to upload CSV. Please check the file format and try again."
-msgstr ""
+msgstr "CSV 업로드에 실패했습니다. 파일 형식을 확인한 뒤 다시 시도해 주세요."
#: packages/email/templates/bulk-send-complete.tsx
msgid "Failed: {failedCount}"
@@ -4725,13 +4793,13 @@ msgstr "비밀번호를 잊으셨나요?"
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
msgctxt "Plan price"
msgid "Free"
-msgstr ""
+msgstr "무료"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Free"
-msgstr ""
+msgstr "무료"
#: packages/lib/utils/fields.ts
#: packages/ui/primitives/document-flow/types.ts
@@ -4822,10 +4890,26 @@ msgstr "홈으로 가기"
msgid "Go to document"
msgstr "문서로 이동"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "첫 페이지로 이동하기"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "마지막 페이지로 이동하기"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "다음 페이지로 이동하기"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "소유자로 이동"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "이전 페이지로 이동하기"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "팀으로 이동"
@@ -4883,7 +4967,7 @@ msgstr "다른 서명자들을 대신해 문서를 완료하도록 도와주세
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Help the AI assign fields to the right recipients."
-msgstr ""
+msgstr "AI가 올바른 수신자에게 필드를 할당할 수 있도록 도와주세요."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains._index.tsx
msgid "Here you can add email domains to your organisation."
@@ -4906,8 +4990,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "여기에서 조직의 브랜딩 기본 설정을 설정할 수 있습니다. 팀은 기본적으로 이 설정을 상속합니다."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "여기에서 팀의 브랜딩 기본 설정을 설정할 수 있습니다."
+msgid "Here you can set branding preferences for your team."
+msgstr "여기에서 팀의 브랜딩 기본 설정을 구성할 수 있습니다."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4922,12 +5006,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "여기에서 팀에 대한 환경설정과 기본값을 설정할 수 있습니다."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "여기에서 일반 브랜딩 기본 설정을 설정할 수 있습니다."
+msgid "Here you can set your general branding preferences."
+msgstr "여기에서 일반 브랜딩 기본 설정을 구성할 수 있습니다."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "여기에서 일반 문서 기본 설정을 설정할 수 있습니다."
+msgid "Here you can set your general document preferences."
+msgstr "여기에서 문서에 대한 일반 기본 설정을 구성할 수 있습니다."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5020,11 +5104,11 @@ msgstr "ID가 클립보드에 복사되었습니다."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Identifying input fields"
-msgstr ""
+msgstr "입력 필드 식별 중"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Identifying recipients"
-msgstr ""
+msgstr "수신자 식별 중"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
msgid "If there is any issue with your subscription, please contact us at <0>{SUPPORT_EMAIL}0>."
@@ -5053,7 +5137,7 @@ msgstr "중요: 이것이 의미하는 것"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Inactive"
-msgstr ""
+msgstr "비활성"
#: apps/remix/app/components/general/app-nav-mobile.tsx
#: apps/remix/app/components/general/app-nav-mobile.tsx
@@ -5092,6 +5176,7 @@ msgstr "인증 방식 상속"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5477,13 +5562,14 @@ msgstr "로그"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Looking for form fields"
-msgstr ""
+msgstr "양식 필드를 찾는 중"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Looking for signature fields"
-msgstr ""
+msgstr "서명 필드를 찾는 중"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5544,6 +5630,10 @@ msgstr "연결된 계정 관리"
msgid "Manage organisation"
msgstr "조직 관리"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "조직 관리"
@@ -5636,7 +5726,7 @@ msgstr "관리자 이상"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Mapping fields to recipients"
-msgstr ""
+msgstr "필드를 수신자에 매핑하는 중"
#: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx
msgid "Mark as viewed"
@@ -5707,15 +5797,15 @@ msgstr "가입일"
msgid "Members"
msgstr "구성원"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "메시지"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "메시지 <0>(선택 사항)0>"
@@ -5865,10 +5955,6 @@ msgstr "만료되지 않음"
msgid "New Password"
msgstr "새 비밀번호"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "새 템플릿"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5894,6 +5980,7 @@ msgstr "다음 수신자 이름"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "아니요"
@@ -5909,11 +5996,11 @@ msgstr "문서를 찾을 수 없습니다"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No email detected"
-msgstr ""
+msgstr "이메일이 감지되지 않았습니다."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "No fields were detected in your document."
-msgstr ""
+msgstr "문서에서 감지된 필드가 없습니다."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
@@ -5961,7 +6048,7 @@ msgstr "수신자 없음"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No recipients were detected in your document."
-msgstr ""
+msgstr "문서에서 감지된 수신자가 없습니다."
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
#: packages/ui/primitives/recipient-selector.tsx
@@ -6101,8 +6188,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "QR 코드를 스캔하거나 코드를 직접 입력한 후, 인증 앱이 제공한 코드를 아래에 입력하세요."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "DNS 레코드를 업데이트한 후에는 전파까지 최대 48시간이 소요될 수 있습니다. 전파가 완료되면 다시 이 페이지로 돌아와 \"도메인 동기화\" 버튼을 눌러 주세요."
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "DNS 레코드를 업데이트한 후 전파가 완료되기까지 최대 48시간이 걸릴 수 있습니다. DNS 전파가 완료되면 다시 이곳으로 돌아와서 \\\"도메인 동기화\\\" 버튼을 눌러야 합니다."
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6136,6 +6223,10 @@ msgstr "PDF 파일만 허용됩니다"
msgid "Oops! Something went wrong."
msgstr "문제가 발생했습니다."
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "메뉴 열기"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "열람됨"
@@ -6329,20 +6420,6 @@ msgstr "소유권이 {organisationMemberName}에게 이전되었습니다."
msgid "Page {0} of {1}"
msgstr "페이지 {0}/{1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr ""
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr ""
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6352,7 +6429,7 @@ msgstr "페이지 {0}/{numPages}"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
msgctxt "Subscription status"
msgid "Paid"
-msgstr ""
+msgstr "유료"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
@@ -6434,7 +6511,7 @@ msgstr "비밀번호가 업데이트되었습니다!"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Past Due"
-msgstr ""
+msgstr "연체"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
@@ -6688,10 +6765,6 @@ msgstr "다른 도메인을 시도해 주세요."
msgid "Please try again and make sure you enter the correct email address."
msgstr "이메일 주소를 올바르게 입력했는지 확인한 후 다시 시도해 주세요."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "나중에 다시 시도해 주세요."
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6873,7 +6946,7 @@ msgstr "전체 <0>전자 서명 고지0>를 읽어 보세요."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Reading your document"
-msgstr ""
+msgstr "문서를 읽는 중"
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
msgid "Ready"
@@ -6936,7 +7009,7 @@ msgstr "수신자"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
msgid "Recipient {0}"
-msgstr ""
+msgstr "수신자 {0}"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/components/recipient/recipient-action-auth-select.tsx
@@ -6969,10 +7042,6 @@ msgstr "수신자가 업데이트되었습니다"
msgid "Recipients"
msgstr "수신자"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr ""
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "수신자 지표"
@@ -7122,7 +7191,7 @@ msgstr "조직 구성원 제거"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
-msgstr ""
+msgstr "수신자 제거"
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
msgid "Remove team email"
@@ -7146,8 +7215,8 @@ msgstr "회신 이메일"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "회신 이메일"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "이메일 회신 <0>(선택 사항)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7284,6 +7353,11 @@ msgstr "재시도"
msgid "Return"
msgstr "돌아가기"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "여기를 눌러 Documenso 로그인 페이지로 돌아가기"
@@ -7450,6 +7524,7 @@ msgid "See the background jobs tab for the status"
msgstr "상태는 백그라운드 작업 탭에서 확인하세요"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8071,7 +8146,7 @@ msgstr "사이트 설정"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Skip"
-msgstr ""
+msgstr "건너뛰기"
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -8089,7 +8164,6 @@ msgstr "일부 서명자에게 서명 필드가 할당되지 않았습니다.
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8134,11 +8208,11 @@ msgstr "<0>{0}0> 팀의 이메일 주소를 확인하는 중 문제가 발생
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Something went wrong while detecting fields."
-msgstr ""
+msgstr "필드를 감지하는 동안 문제가 발생했습니다."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Something went wrong while detecting recipients."
-msgstr ""
+msgstr "수신자를 감지하는 동안 문제가 발생했습니다."
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
@@ -8252,14 +8326,14 @@ msgstr "Stripe 고객이 성공적으로 생성되었습니다."
msgid "Stripe Customer ID"
msgstr "Stripe 고객 ID"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "제목"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "제목 <0>(선택 사항)0>"
@@ -8580,7 +8654,6 @@ msgstr "이 조직 그룹이 현재 할당된 팀"
msgid "Template"
msgstr "템플릿"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: packages/ui/primitives/document-upload-button.tsx
msgid "Template (Legacy)"
msgstr "템플릿(레거시)"
@@ -8593,7 +8666,7 @@ msgstr "템플릿이 생성되었습니다"
msgid "Template deleted"
msgstr "템플릿이 삭제되었습니다"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "템플릿 문서가 업로드되었습니다"
@@ -8655,10 +8728,6 @@ msgstr "템플릿이 업로드되었습니다."
msgid "Templates"
msgstr "템플릿"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "템플릿을 사용하면 미리 설정된 수신자와 필드로 문서를 빠르게 생성할 수 있습니다."
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "테스트"
@@ -8765,7 +8834,7 @@ msgstr "이 이메일 주소의 표시 이름입니다."
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
-msgstr ""
+msgstr "문서가 성공적으로 삭제되었습니다."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
msgid "The document has been moved successfully."
@@ -8773,7 +8842,7 @@ msgstr "문서가 성공적으로 이동되었습니다."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "The document has been successfully rejected."
-msgstr ""
+msgstr "문서가 성공적으로 거부되었습니다."
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "The document is already saved and cannot be changed."
@@ -8792,6 +8861,12 @@ msgstr "문서 소유자에게 이 거부 사실이 통보되었습니다. 현
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "문서 소유자에게 귀하의 결정이 이미 전달되었습니다. 필요할 경우 추가 안내를 위해 연락을 드릴 수 있습니다."
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "문서는 생성되었지만 수신자에게 발송되지 않았습니다."
@@ -8826,8 +8901,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
msgstr "찾고 있는 이메일 도메인은 삭제되었거나 이름이 변경되었거나 처음부터 존재하지 않았을 수 있습니다."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The email or password provided is incorrect"
-msgstr "이메일 또는 비밀번호가 올바르지 않습니다."
+msgid "The email or password provided is incorrect."
+msgstr "입력하신 이메일 또는 비밀번호가 올바르지 않습니다."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -8860,7 +8935,7 @@ msgstr "다음 오류가 발생했습니다."
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following recipients require an email address:"
-msgstr ""
+msgstr "다음 수신자에게는 이메일 주소가 필요합니다:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following signers are missing signature fields:"
@@ -9025,7 +9100,7 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "사용한 토큰이 만료되었거나 존재하지 않습니다. 여전히 비밀번호를 잊으셨다면 새 재설정 링크를 요청해 주세요."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
+msgid "The two-factor authentication code provided is incorrect."
msgstr "입력하신 2단계 인증 코드가 올바르지 않습니다."
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
@@ -9051,7 +9126,7 @@ msgstr "사용자의 2단계 인증이 성공적으로 재설정되었습니다.
#: packages/ui/components/document/document-visibility-select.tsx
msgid "The visibility of the document to the recipient."
-msgstr ""
+msgstr "수신자에게 보이는 문서의 가시성입니다."
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
@@ -9122,7 +9197,7 @@ msgstr "이 작업은 되돌릴 수 있지만, 계정 설정 및 콘텐츠가
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "This can take a minute or two depending on the size of your document."
-msgstr ""
+msgstr "문서 크기에 따라 1~2분 정도 소요될 수 있습니다."
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
msgid "This claim is locked and cannot be deleted."
@@ -9196,7 +9271,7 @@ msgid "This document was created using a direct link."
msgstr "이 문서는 직접 링크를 사용해 생성되었습니다."
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
+msgid "This document was sent using <0>Documenso0>."
msgstr "이 문서는 <0>Documenso0>를 사용하여 전송되었습니다."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
@@ -9502,7 +9577,7 @@ msgstr "토큰 이름"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Too many requests"
-msgstr ""
+msgstr "요청이 너무 많습니다."
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
msgid "Top"
@@ -9528,6 +9603,10 @@ msgstr "가입한 전체 서명자 수"
msgid "Total Users"
msgstr "전체 사용자 수"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "문서를 다른 팀으로 전송"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9538,7 +9617,11 @@ msgstr "트리거"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Try again"
-msgstr ""
+msgstr "다시 시도"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "AI 감지를 켜서 문서에서 수신인과 필드를 자동으로 찾을 수 있습니다. AI 공급자는 학습을 위해 귀하의 데이터를 보관하지 않습니다."
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
@@ -9686,6 +9769,10 @@ msgstr "권한이 없습니다"
msgid "Uncompleted"
msgstr "미완료"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "실행 취소"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -9704,7 +9791,7 @@ msgstr "알 수 없는 오류"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Unknown name"
-msgstr ""
+msgstr "이름을 알 수 없음"
#: apps/remix/app/components/tables/admin-claims-table.tsx
msgid "Unlimited"
@@ -10298,8 +10385,8 @@ msgstr "내 차례를 기다리는 중"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "이와 같은 멋진 서명 링크를 보내고 싶으신가요? <0>Documenso를 확인해 보세요.0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr "이와 같이 세련된 서명 링크를 보내고 싶으신가요? <0>Documenso를 확인해 보세요0>."
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10334,6 +10421,10 @@ msgstr "현재 이 패스키를 업데이트할 수 없습니다. 나중에 다
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "Stripe 고객을 생성하지 못했습니다. 다시 시도해 주세요."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "지금은 AI 기능을 활성화할 수 없습니다. 다시 시도해 주세요."
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "그룹을 업데이트하지 못했습니다. 다시 시도해 주세요."
@@ -10417,7 +10508,7 @@ msgstr "계정을 삭제하는 중 알 수 없는 오류가 발생했습니다.
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "We encountered an unknown error while attempting to delete your document. Please try again later."
-msgstr ""
+msgstr "문서를 삭제하는 동안 알 수 없는 오류가 발생했습니다. 잠시 후 다시 시도해 주세요."
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
msgid "We encountered an unknown error while attempting to disable access."
@@ -10534,16 +10625,6 @@ msgstr "팀 이메일을 업데이트하는 중 알 수 없는 오류가 발생
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "프로필을 업데이트하는 중 알 수 없는 오류가 발생했습니다. 잠시 후 다시 시도해 주세요."
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr ""
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr ""
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "인증을 위해 확인 이메일을 발송했습니다."
@@ -10637,11 +10718,11 @@ msgstr "가능한 한 빨리 이메일로 다시 연락드리겠습니다."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "We'll scan your document to find form fields like signature lines, text inputs, checkboxes, and more. Detected fields will be suggested for you to review."
-msgstr ""
+msgstr "문서에서 서명 줄, 텍스트 입력란, 체크박스 등과 같은 양식 필드를 찾기 위해 스캔합니다. 감지된 필드는 검토할 수 있도록 제안됩니다."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "We'll scan your document to find signature fields and identify who needs to sign. Detected recipients will be suggested for you to review."
-msgstr ""
+msgstr "문서에서 서명 필드를 찾고 누가 서명해야 하는지 식별하기 위해 스캔합니다. 감지된 수신자는 검토할 수 있도록 제안됩니다."
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
msgid "We'll send a 6-digit code to your email"
@@ -10793,6 +10874,7 @@ msgstr "연간"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "예"
@@ -10905,13 +10987,13 @@ msgid "You are currently updating <0>{0}0>"
msgstr "현재 <0>{0}0>을(를) 업데이트하고 있습니다."
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
-msgstr "현재 <0>{memberName}0>을(를) 업데이트하고 있습니다."
+msgid "You are currently updating <0>{memberName}0>."
+msgstr "현재 <0>{memberName}0>을(를) 수정하고 있습니다."
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
-msgstr "현재 <0>{organisationMemberName}0>을(를) 업데이트하고 있습니다."
+msgid "You are currently updating <0>{organisationMemberName}0>."
+msgstr "현재 <0>{organisationMemberName}0>을(를) 수정하고 있습니다."
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
msgid "You are currently updating the <0>{passkeyName}0> passkey."
@@ -10948,11 +11030,11 @@ msgstr "이 사용자의 2단계 인증을 재설정할 권한이 없습니다."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "You can add fields manually in the editor."
-msgstr ""
+msgstr "편집기에서 필드를 수동으로 추가할 수 있습니다."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You can add recipients manually in the editor."
-msgstr ""
+msgstr "편집기에서 수신자를 수동으로 추가할 수 있습니다."
#: packages/email/template-components/template-confirmation-email.tsx
msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
@@ -10972,16 +11054,16 @@ msgstr "조직의 모든 구성원이 기본적으로 이 팀에 접근할 수
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "여기에서 이메일 기본 설정을 관리할 수 있습니다."
+msgid "You can manage your email preferences here."
+msgstr "이메일 기본 설정은 여기에서 관리할 수 있습니다."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
-msgstr ""
+msgstr "필드는 초안 봉투에서만 감지할 수 있습니다."
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "언제든지 Documenso 팀 설정에서 액세스를 취소할 수 있습니다. <0>여기0>에서 관리하세요."
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr "언제든지 Documenso의 팀 설정에서 <0>여기0>에서 액세스를 취소할 수 있습니다."
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11014,8 +11096,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "본인보다 높은 역할을 가진 그룹은 삭제할 수 없습니다."
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-msgid "You cannot delete this item because the document has been sent to recipients"
-msgstr "이 문서는 이미 수신자에게 전송되었기 때문에 이 항목을 삭제할 수 없습니다"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr "이 문서는 이미 수신자에게 전송되었기 때문에 이 항목을 삭제할 수 없습니다."
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11041,8 +11123,8 @@ msgstr "현재는 문서를 업로드할 수 없습니다."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "암호화된 PDF는 업로드할 수 없습니다"
+msgid "You cannot upload encrypted PDFs."
+msgstr "암호화된 PDF는 업로드할 수 없습니다."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11053,7 +11135,7 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "현재 이 조직 내 어느 팀에도 접근 권한이 없습니다. 액세스를 요청하려면 조직 관리자에게 문의해 주세요."
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
+msgid "You do not have permission to create a token for this team."
msgstr "이 팀에 대한 토큰을 생성할 권한이 없습니다."
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
@@ -11123,8 +11205,8 @@ msgstr "아직 문서를 생성하거나 받지 않았습니다. 문서를 생
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You have reached the limit of the number of files per envelope"
-msgstr "봉투당 파일 개수 제한에 도달했습니다"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr "하나의 봉투에 포함할 수 있는 파일 수 한도에 도달했습니다."
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11279,10 +11361,14 @@ msgstr "앞으로 로그인할 때 인증 앱의 코드를 입력해야 합니
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "모두 서명하면 서명된 문서의 사본이 이메일로 전송됩니다."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "관리자이므로 지금 바로 이 팀에 대해 AI 기능을 활성화할 수 있습니다. 활성화되면 팀의 모든 구성원이 AI 감지를 사용할 수 있습니다."
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
-msgstr ""
+msgstr "감지 요청을 너무 많이 보냈습니다. 잠시 후 다시 시도해 주세요."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Your Account"
@@ -11337,6 +11423,10 @@ msgstr "현재 요금제의 결제가 연체되었습니다."
msgid "Your direct signing templates"
msgstr "직접 서명 템플릿"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "문서 내용은 감지 목적에 한해 안전하게 AI 공급자에게 전송되며, 저장되거나 학습용으로 사용되지 않습니다."
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11372,14 +11462,14 @@ msgstr "문서가 성공적으로 복제되었습니다."
msgid "Your document has been uploaded successfully."
msgstr "문서가 성공적으로 업로드되었습니다."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "문서가 성공적으로 업로드되었습니다. 템플릿 페이지로 이동합니다."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Your document is processed securely using AI services that don't retain your data."
-msgstr ""
+msgstr "문서는 데이터를 보관하지 않는 AI 서비스를 사용해 안전하게 처리됩니다."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
diff --git a/packages/lib/translations/nl/web.po b/packages/lib/translations/nl/web.po
index 3d64585a0..b7dddda86 100644
--- a/packages/lib/translations/nl/web.po
+++ b/packages/lib/translations/nl/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: nl\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2025-11-27 06:05\n"
+"PO-Revision-Date: 2025-12-15 02:39\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -68,7 +68,7 @@ msgstr "{0, plural, one {(1 teken te veel)} other {(# tekens te veel)}}"
#. placeholder {2}: table.getFilteredSelectedRowModel().rows.length
#: packages/ui/primitives/data-table-pagination.tsx
msgid "{0, plural, one {{1} of # row selected.} other {{2} of # rows selected.}}"
-msgstr ""
+msgstr "{0, plural, one {{1} van # rij geselecteerd.} other {{2} van # rijen geselecteerd.}}"
#. placeholder {0}: Math.abs(remaningLength)
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
@@ -101,6 +101,11 @@ msgstr "{0, plural, one {# veld} other {# velden}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, one {# map} other {# mappen}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, one {# ontvanger is toegevoegd via AI-detectie.} other {# ontvangers zijn toegevoegd via AI-detectie.}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -151,11 +156,44 @@ msgstr "{0, plural, one {1 overeenkomend veld} other {# overeenkomende velden}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 ontvanger} other {# ontvangers}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, one {Pagina {1} van {2} - # veld gevonden} other {Pagina {3} van {4} - # velden gevonden}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, one {Pagina {1} van {2} - # ontvanger gevonden} other {Pagina {3} van {4} - # ontvangers gevonden}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, one {Ontvanger toegevoegd} other {Ontvangers toegevoegd}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Wacht op 1 ontvanger} other {Wacht op # ontvangers}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, one {We hebben # veld in je document gevonden.} other {We hebben # velden in je document gevonden.}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, one {We hebben # ontvanger in je document gevonden.} other {We hebben # ontvangers in je document gevonden.}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -200,11 +238,6 @@ msgstr "{0} van {1} documenten resterend deze maand."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} heeft namens \"{1}\" je uitgenodigd om het document \"{2}\" te {recipientActionVerb}."
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr ""
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -279,7 +312,7 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {U kunt niet meer dan # passkey hebben.}
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}"
-msgstr ""
+msgstr "{maximumEnvelopeItemCount, plural, one {Je kunt niet meer dan # item per envelop uploaden.} other {Je kunt niet meer dan # items per envelop uploaden.}}"
#: packages/lib/utils/document-audit-logs.ts
msgid "{prefix} added a field"
@@ -514,39 +547,39 @@ msgstr "<0>{organisationName}0> heeft verzocht om je huidige Documenso-account
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> heeft je uitgenodigd om dit document goed te keuren"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> heeft je uitgenodigd om bij dit document te assisteren"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> heeft je uitgenodigd om dit document te ondertekenen"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> heeft je uitgenodigd om dit document te bekijken"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> namens \"{0}\" heeft je uitgenodigd om dit document goed te keuren"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> namens \"{0}\" heeft je uitgenodigd om bij dit document te assisteren"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> namens \"{0}\" heeft je uitgenodigd om dit document te ondertekenen"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> namens \"{0}\" heeft je uitgenodigd om dit document te bekijken"
#: packages/email/templates/confirm-team-email.tsx
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
@@ -558,7 +591,7 @@ msgstr "<0>Accountbeheer:0> Je accountinstellingen, rechten en voorkeuren wijz
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Admins only0> - Only admins can access and view the document"
-msgstr ""
+msgstr "<0>Alleen beheerders0> - Alleen beheerders kunnen toegang krijgen tot en het document bekijken"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Data access:0> Access all data associated with your account"
@@ -579,7 +612,7 @@ msgstr "<0>Gebeurtenissen:0> Alle"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Everyone0> - Everyone can access and view the document"
-msgstr ""
+msgstr "<0>Iedereen0> - Iedereen kan toegang krijgen tot en het document bekijken"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Full account access:0> View all your profile information, settings, and activity"
@@ -591,7 +624,7 @@ msgstr "<0>Authenticatiemethode overnemen0> - Gebruik de globale authenticatie
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Managers and above0> - Only managers and above can access and view the document"
-msgstr ""
+msgstr "<0>Managers en hoger0> - Alleen managers en hoger kunnen het document openen en bekijken."
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "<0>No restrictions0> - No authentication required"
@@ -851,9 +884,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "Er is een verzoek ingediend door {0} op Documenso om je e-mailadres te gebruiken."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "Een geheim dat naar je URL wordt verzonden, zodat je kunt verifiëren dat het verzoek door Documenso is verzonden"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Een geheim dat naar je URL wordt verzonden, zodat je kunt verifiëren dat het verzoek door Documenso is verzonden."
@@ -951,11 +981,11 @@ msgstr "Account ingeschakeld"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account link declined"
-msgstr ""
+msgstr "Koppeling van account geweigerd"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account linked successfully"
-msgstr ""
+msgstr "Account succesvol gekoppeld"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account Linking Request"
@@ -1017,7 +1047,7 @@ msgstr "Actief"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Active"
-msgstr ""
+msgstr "Actief"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -1114,7 +1144,7 @@ msgstr "E-maildomein toevoegen"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Add fields"
-msgstr ""
+msgstr "Velden toevoegen"
#: apps/remix/app/components/general/document/document-edit-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
@@ -1182,7 +1212,7 @@ msgstr "Placeholders toevoegen"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Add recipients"
-msgstr ""
+msgstr "Ontvangers toevoegen"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Add Recipients"
@@ -1286,7 +1316,11 @@ msgstr "Na indiening wordt er automatisch een document gegenereerd en toegevoegd
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "AI Features"
-msgstr ""
+msgstr "AI-functies"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "AI-functies zijn uitgeschakeld voor je team. Vraag de eigenaar van je team of de eigenaar van de organisatie om ze in te schakelen."
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -1384,7 +1418,7 @@ msgstr "Maakt authenticatie mogelijk met biometrie, wachtwoordbeheerders, hardwa
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Almost done"
-msgstr ""
+msgstr "Bijna klaar"
#: apps/remix/app/components/forms/signup.tsx
msgid "Already have an account? <0>Sign in instead0>"
@@ -1478,7 +1512,7 @@ msgstr "Er is een fout opgetreden tijdens het automatisch ondertekenen van het d
#: apps/remix/app/components/general/document-signing/document-signing-form.tsx
msgid "An error occurred while completing the document. Please try again."
-msgstr ""
+msgstr "Er is een fout opgetreden bij het voltooien van het document. Probeer het opnieuw."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "An error occurred while creating document from template."
@@ -1526,7 +1560,7 @@ msgstr "Er is een fout opgetreden bij het verplaatsen van de sjabloon."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "An error occurred while rejecting the document. Please try again."
-msgstr ""
+msgstr "Er is een fout opgetreden bij het afwijzen van het document. Probeer het opnieuw."
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
#: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx
@@ -1692,11 +1726,11 @@ msgstr "Er is een onbekende fout opgetreden tijdens het verplaatsen van de map."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Analyzing page layout"
-msgstr ""
+msgstr "Paginalay-out analyseren"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Analyzing pages"
-msgstr ""
+msgstr "Pagina's analyseren"
#: apps/remix/app/routes/_authenticated+/inbox.tsx
msgid "Any documents that you have been invited to will appear here"
@@ -2265,6 +2299,10 @@ msgstr "Grafieken"
msgid "Checkbox"
msgstr "Selectievakje"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "Checkbox-optie"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "Instellingen selectievakje"
@@ -2368,6 +2406,7 @@ msgstr "Clientgeheim"
msgid "Client secret is required"
msgstr "Clientgeheim is verplicht"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2380,7 +2419,6 @@ msgstr "Clientgeheim is verplicht"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2391,7 +2429,9 @@ msgstr "Clientgeheim is verplicht"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "Sluiten"
@@ -2584,7 +2624,7 @@ msgstr "Inhoud"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Context"
-msgstr ""
+msgstr "Context"
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
@@ -2667,13 +2707,13 @@ msgstr "Gekopieerd"
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field"
-msgstr ""
+msgstr "Veld gekopieerd"
#: apps/remix/app/components/embed/authoring/configure-fields-view.tsx
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field to clipboard"
-msgstr ""
+msgstr "Veld naar klembord gekopieerd"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
@@ -3020,7 +3060,7 @@ msgstr "Datuminstellingen"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "David is the Employee, Lucas is the Manager"
-msgstr ""
+msgstr "David is de werknemer, Lucas is de manager"
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -3069,6 +3109,10 @@ msgstr "Standaardtijdzone"
msgid "Default Value"
msgstr "Standaardwaarde"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "verwijderen"
@@ -3234,48 +3278,48 @@ msgstr "Details"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect"
-msgstr ""
+msgstr "Detecteren"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detect fields"
-msgstr ""
+msgstr "Velden detecteren"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect recipients"
-msgstr ""
+msgstr "Ontvangers detecteren"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
msgid "Detect recipients with AI"
-msgstr ""
+msgstr "Ontvangers met AI detecteren"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Detect with AI"
-msgstr ""
+msgstr "Detecteren met AI"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detected fields"
-msgstr ""
+msgstr "Gedetecteerde velden"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detected recipients"
-msgstr ""
+msgstr "Gedetecteerde ontvangers"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting fields"
-msgstr ""
+msgstr "Velden detecteren"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detecting recipients"
-msgstr ""
+msgstr "Ontvangers detecteren"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting signature areas"
-msgstr ""
+msgstr "Handtekeninggebieden detecteren"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detection failed"
-msgstr ""
+msgstr "Detectie mislukt"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Developer Mode"
@@ -3288,8 +3332,8 @@ msgid "Device"
msgstr "Apparaat"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "Geen wachtwoordwijziging aangevraagd? We helpen je graag je account te beveiligen, <0>neem gewoon contact met ons op.0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr "Geen wachtwoordwijziging aangevraagd? We helpen je graag je account te beveiligen, neem gewoon <0>contact met ons op0>."
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3632,6 +3676,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "Document geopend"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "Document in behandeling"
@@ -3830,6 +3879,11 @@ msgstr "Domeinnaam"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Nog geen account? <0>Registreer0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "Niet overdragen (alle documenten verwijderen)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3968,6 +4022,7 @@ msgstr "Bijv. 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4184,9 +4239,18 @@ msgstr "Account inschakelen"
msgid "Enable Account"
msgstr "Account inschakelen"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "AI-detectie inschakelen"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "AI-functies inschakelen"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
-msgstr ""
+msgstr "Schakel AI-functies in, zoals automatische detectie van ontvangers. Wanneer dit is ingeschakeld, wordt de documentinhoud naar AI-providers verzonden. We gebruiken alleen providers die geen gegevens bewaren voor training en geven waar mogelijk de voorkeur aan Europese regio's."
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
msgid "Enable Authenticator App"
@@ -4224,6 +4288,10 @@ msgstr "Ondertekeningsvolgorde inschakelen"
msgid "Enable SSO portal"
msgstr "SSO-portaal inschakelen"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4422,11 +4490,11 @@ msgstr "Fout"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error declining account link"
-msgstr ""
+msgstr "Fout bij weigeren van accountkoppeling"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error linking account"
-msgstr ""
+msgstr "Fout bij koppelen van account"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "Error uploading file"
@@ -4484,7 +4552,7 @@ msgstr "Externe ID"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Extracting contact details"
-msgstr ""
+msgstr "Contactgegevens extraheren"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -4493,7 +4561,7 @@ msgstr "Mislukt"
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
msgid "Failed to complete the document. Please try again."
-msgstr ""
+msgstr "Het is niet gelukt om het document te voltooien. Probeer het opnieuw."
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Failed to create folder"
@@ -4565,7 +4633,7 @@ msgstr "Bijwerken van webhook mislukt"
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
msgid "Failed to upload CSV. Please check the file format and try again."
-msgstr ""
+msgstr "CSV uploaden is mislukt. Controleer de bestandsindeling en probeer het opnieuw."
#: packages/email/templates/bulk-send-complete.tsx
msgid "Failed: {failedCount}"
@@ -4725,13 +4793,13 @@ msgstr "Wachtwoord vergeten?"
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
msgctxt "Plan price"
msgid "Free"
-msgstr ""
+msgstr "Gratis"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Free"
-msgstr ""
+msgstr "Gratis"
#: packages/lib/utils/fields.ts
#: packages/ui/primitives/document-flow/types.ts
@@ -4822,10 +4890,26 @@ msgstr "Ga naar start"
msgid "Go to document"
msgstr "Ga naar document"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "Ga naar eerste pagina"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "Ga naar laatste pagina"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "Ga naar volgende pagina"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "Ga naar eigenaar"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "Ga naar vorige pagina"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "Ga naar team"
@@ -4883,7 +4967,7 @@ msgstr "Help het document voor andere ondertekenaars te voltooien."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Help the AI assign fields to the right recipients."
-msgstr ""
+msgstr "Help de AI om velden aan de juiste ontvangers toe te wijzen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains._index.tsx
msgid "Here you can add email domains to your organisation."
@@ -4906,8 +4990,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "Hier kun je brandingvoorkeuren instellen voor je organisatie. Teams nemen deze instellingen standaard over."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "Hier kun je brandingvoorkeuren instellen voor je team"
+msgid "Here you can set branding preferences for your team."
+msgstr "Hier kun je de brandingvoorkeuren voor je team instellen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4922,12 +5006,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "Hier kun je voorkeuren en standaardinstellingen voor je team instellen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "Hier kun je je algemene brandingvoorkeuren instellen"
+msgid "Here you can set your general branding preferences."
+msgstr "Hier kun je je algemene brandingvoorkeuren instellen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "Hier kun je je algemene documentvoorkeuren instellen"
+msgid "Here you can set your general document preferences."
+msgstr "Hier kun je je algemene documentvoorkeuren instellen."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5020,11 +5104,11 @@ msgstr "ID naar klembord gekopieerd"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Identifying input fields"
-msgstr ""
+msgstr "Invoervelden identificeren"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Identifying recipients"
-msgstr ""
+msgstr "Ontvangers identificeren"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
msgid "If there is any issue with your subscription, please contact us at <0>{SUPPORT_EMAIL}0>."
@@ -5053,7 +5137,7 @@ msgstr "Belangrijk: wat dit betekent"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Inactive"
-msgstr ""
+msgstr "Inactief"
#: apps/remix/app/components/general/app-nav-mobile.tsx
#: apps/remix/app/components/general/app-nav-mobile.tsx
@@ -5092,6 +5176,7 @@ msgstr "Authenticatiemethode overnemen"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5477,13 +5562,14 @@ msgstr "Logboeken"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Looking for form fields"
-msgstr ""
+msgstr "Zoeken naar formuliervelden"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Looking for signature fields"
-msgstr ""
+msgstr "Zoeken naar handtekeningvelden"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5544,6 +5630,10 @@ msgstr "Gekoppelde accounts beheren"
msgid "Manage organisation"
msgstr "Organisatie beheren"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "Organisaties beheren"
@@ -5636,7 +5726,7 @@ msgstr "Managers en hoger"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Mapping fields to recipients"
-msgstr ""
+msgstr "Velden aan ontvangers koppelen"
#: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx
msgid "Mark as viewed"
@@ -5707,15 +5797,15 @@ msgstr "Lid sinds"
msgid "Members"
msgstr "Leden"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "Bericht"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "Bericht <0>(optioneel)0>"
@@ -5865,10 +5955,6 @@ msgstr "Nooit verlopen"
msgid "New Password"
msgstr "Nieuw wachtwoord"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "Nieuwe sjabloon"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5894,6 +5980,7 @@ msgstr "Naam volgende ontvanger"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "Nee"
@@ -5909,11 +5996,11 @@ msgstr "Geen documenten gevonden"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No email detected"
-msgstr ""
+msgstr "Geen e-mailadres gedetecteerd"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "No fields were detected in your document."
-msgstr ""
+msgstr "Er zijn geen velden in uw document gedetecteerd."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
@@ -5961,7 +6048,7 @@ msgstr "Geen ontvangers"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No recipients were detected in your document."
-msgstr ""
+msgstr "Er zijn geen ontvangers in uw document gedetecteerd."
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
#: packages/ui/primitives/recipient-selector.tsx
@@ -6101,8 +6188,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "Zodra je de QR‑code hebt gescand of de code handmatig hebt ingevoerd, voer je hieronder de code in die door je authenticator‑app is gegenereerd."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "Zodra je je DNS-records hebt bijgewerkt, kan het tot 48 uur duren voordat deze zijn gepropageerd. Zodra de DNS-propagatie is voltooid, moet je terugkomen en op de knop \"Domeinen synchroniseren\" klikken."
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "Zodra je je DNS-records hebt bijgewerkt, kan het tot 48 uur duren voordat deze zijn doorgevoerd. Zodra de DNS-propagatie is voltooid, moet je hier terugkomen en op de knop \"Domeinen synchroniseren\" klikken."
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6136,6 +6223,10 @@ msgstr "Alleen PDF-bestanden zijn toegestaan"
msgid "Oops! Something went wrong."
msgstr "Oeps! Er is iets misgegaan."
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "Menu openen"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "Geopend"
@@ -6329,20 +6420,6 @@ msgstr "Eigendom overgedragen aan {organisationMemberName}."
msgid "Page {0} of {1}"
msgstr "Pagina {0} van {1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr ""
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr ""
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6352,7 +6429,7 @@ msgstr "Pagina {0} van {numPages}"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
msgctxt "Subscription status"
msgid "Paid"
-msgstr ""
+msgstr "Betaald"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
@@ -6434,7 +6511,7 @@ msgstr "Wachtwoord bijgewerkt."
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Past Due"
-msgstr ""
+msgstr "Achterstallig"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
@@ -6688,10 +6765,6 @@ msgstr "Probeer een ander domein."
msgid "Please try again and make sure you enter the correct email address."
msgstr "Probeer het opnieuw en controleer of je het juiste e‑mailadres hebt ingevoerd."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "Probeer het later opnieuw."
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6873,7 +6946,7 @@ msgstr "Lees de volledige <0>kennisgeving elektronische handtekening0>."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Reading your document"
-msgstr ""
+msgstr "Uw document wordt gelezen"
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
msgid "Ready"
@@ -6936,7 +7009,7 @@ msgstr "Ontvanger"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
msgid "Recipient {0}"
-msgstr ""
+msgstr "Ontvanger {0}"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/components/recipient/recipient-action-auth-select.tsx
@@ -6969,10 +7042,6 @@ msgstr "Ontvanger bijgewerkt"
msgid "Recipients"
msgstr "Ontvangers"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr ""
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "Ontvangerstatistieken"
@@ -7122,7 +7191,7 @@ msgstr "Organisatielid verwijderen"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
-msgstr ""
+msgstr "Ontvanger verwijderen"
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
msgid "Remove team email"
@@ -7146,8 +7215,8 @@ msgstr "Reply-to e-mailadres"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "Reply-to e-mailadres"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "Antwoord op e-mail <0>(optioneel)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7284,6 +7353,11 @@ msgstr "Opnieuw proberen"
msgid "Return"
msgstr "Terugkeren"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "Ga hier terug naar de Documenso-aanmeldpagina"
@@ -7450,6 +7524,7 @@ msgid "See the background jobs tab for the status"
msgstr "Zie het tabblad Achtergrondtaken voor de status"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8071,7 +8146,7 @@ msgstr "Site‑instellingen"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Skip"
-msgstr ""
+msgstr "Overslaan"
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -8089,7 +8164,6 @@ msgstr "Sommige ondertekenaars hebben geen handtekeningveld toegewezen gekregen.
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8134,11 +8208,11 @@ msgstr "Er is iets misgegaan bij het verifiëren van je e‑mailadres voor <0>{0
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Something went wrong while detecting fields."
-msgstr ""
+msgstr "Er is iets misgegaan bij het detecteren van velden."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Something went wrong while detecting recipients."
-msgstr ""
+msgstr "Er is iets misgegaan bij het detecteren van ontvangers."
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
@@ -8252,14 +8326,14 @@ msgstr "Stripe-klant succesvol aangemaakt"
msgid "Stripe Customer ID"
msgstr "Stripe-klant-ID"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "Onderwerp"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "Onderwerp <0>(optioneel)0>"
@@ -8580,7 +8654,6 @@ 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 (verouderd)"
@@ -8593,7 +8666,7 @@ msgstr "Sjabloon aangemaakt"
msgid "Template deleted"
msgstr "Sjabloon verwijderd"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "Sjabloondocument geüpload"
@@ -8655,10 +8728,6 @@ msgstr "Sjabloon geüpload"
msgid "Templates"
msgstr "Sjablonen"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "Met sjablonen kun je snel documenten genereren met vooraf ingevulde ontvangers en velden."
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "Test"
@@ -8765,7 +8834,7 @@ msgstr "De weergavenaam voor dit e-mailadres"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
-msgstr ""
+msgstr "Het document is succesvol verwijderd."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
msgid "The document has been moved successfully."
@@ -8773,7 +8842,7 @@ msgstr "Het document is succesvol verplaatst."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "The document has been successfully rejected."
-msgstr ""
+msgstr "Het document is succesvol afgewezen."
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "The document is already saved and cannot be changed."
@@ -8792,6 +8861,12 @@ msgstr "De documenteigenaar is op de hoogte gebracht van deze weigering. Er is o
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "De documenteigenaar is op de hoogte gebracht van je beslissing. Indien nodig kan diegene contact met je opnemen met verdere instructies."
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "Het document is aangemaakt, maar kon niet naar ontvangers worden verzonden."
@@ -8826,8 +8901,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
msgstr "Het e-maildomein dat u zoekt, is mogelijk verwijderd, hernoemd of heeft misschien nooit bestaan."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The email or password provided is incorrect"
-msgstr "Het opgegeven e-mailadres of wachtwoord is onjuist"
+msgid "The email or password provided is incorrect."
+msgstr "Het opgegeven e-mailadres of wachtwoord is onjuist."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -8860,7 +8935,7 @@ msgstr "De volgende fouten zijn opgetreden:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following recipients require an email address:"
-msgstr ""
+msgstr "De volgende ontvangers hebben een e-mailadres nodig:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following signers are missing signature fields:"
@@ -9025,8 +9100,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "Het token waarmee je je wachtwoord probeerde te resetten, is verlopen of heeft nooit bestaan. Als je je wachtwoord nog steeds bent vergeten, vraag dan een nieuwe resetlink aan."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "De opgegeven twee-factor-authenticatiecode is onjuist"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr "De opgegeven code voor multifactorauthenticatie is onjuist."
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9051,7 +9126,7 @@ msgstr "De tweefactorauthenticatie van de gebruiker is succesvol gereset."
#: packages/ui/components/document/document-visibility-select.tsx
msgid "The visibility of the document to the recipient."
-msgstr ""
+msgstr "De zichtbaarheid van het document voor de ontvanger."
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
@@ -9122,7 +9197,7 @@ msgstr "Deze actie is omkeerbaar, maar wees voorzichtig, want het account kan bl
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "This can take a minute or two depending on the size of your document."
-msgstr ""
+msgstr "Dit kan een of twee minuten duren, afhankelijk van de grootte van uw document."
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
msgid "This claim is locked and cannot be deleted."
@@ -9196,8 +9271,8 @@ msgid "This document was created using a direct link."
msgstr "Dit document is aangemaakt met een directe link."
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
-msgstr "Dit document is verzonden met <0>Documenso.0>"
+msgid "This document was sent using <0>Documenso0>."
+msgstr "Dit document is verzonden met <0>Documenso0>."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document will be duplicated."
@@ -9502,7 +9577,7 @@ msgstr "Tokennaam"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Too many requests"
-msgstr ""
+msgstr "Te veel verzoeken"
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
msgid "Top"
@@ -9528,6 +9603,10 @@ msgstr "Totaal aantal ondertekenaars dat zich heeft geregistreerd"
msgid "Total Users"
msgstr "Totaal aantal gebruikers"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "Documenten overdragen naar een ander team"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9538,7 +9617,11 @@ msgstr "Triggers"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Try again"
-msgstr ""
+msgstr "Opnieuw proberen"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "Schakel AI-detectie in om automatisch ontvangers en velden in je documenten te vinden. AI-aanbieders bewaren je gegevens niet voor trainingsdoeleinden."
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
@@ -9686,6 +9769,10 @@ msgstr "Niet gemachtigd"
msgid "Uncompleted"
msgstr "Onvoltooid"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "Ongedaan maken"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -9704,7 +9791,7 @@ msgstr "Onbekende fout"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Unknown name"
-msgstr ""
+msgstr "Onbekende naam"
#: apps/remix/app/components/tables/admin-claims-table.tsx
msgid "Unlimited"
@@ -10298,8 +10385,8 @@ msgstr "Wachten op jouw beurt"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "Wil je zulke strakke ondertekeningslinks verzenden als deze? <0>Bekijk Documenso.0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr "Wil je ook van die strakke ondertekenlinks versturen zoals deze? <0>Bekijk Documenso0>."
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10334,6 +10421,10 @@ msgstr "We kunnen deze passkey momenteel niet bijwerken. Probeer het later opnie
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "We konden geen Stripe-klant aanmaken. Probeer het opnieuw."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "We konden AI-functies nu niet inschakelen. Probeer het opnieuw."
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "We konden de groep niet bijwerken. Probeer het opnieuw."
@@ -10417,7 +10508,7 @@ msgstr "Er is een onbekende fout opgetreden bij het verwijderen van je account.
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "We encountered an unknown error while attempting to delete your document. Please try again later."
-msgstr ""
+msgstr "Er is een onbekende fout opgetreden bij het proberen verwijderen van uw document. Probeer het later opnieuw."
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
msgid "We encountered an unknown error while attempting to disable access."
@@ -10534,16 +10625,6 @@ msgstr "Er is een onbekende fout opgetreden bij het bijwerken van de team‑e‑
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "Er is een onbekende fout opgetreden bij het bijwerken van je profiel. Probeer het later opnieuw."
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr ""
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr ""
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "We hebben een bevestigingsmail voor verificatie verzonden."
@@ -10637,11 +10718,11 @@ msgstr "We nemen zo snel mogelijk per e-mail contact met u op."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "We'll scan your document to find form fields like signature lines, text inputs, checkboxes, and more. Detected fields will be suggested for you to review."
-msgstr ""
+msgstr "We scannen uw document om formuliervelden te vinden, zoals handtekeningsregels, tekstvelden, selectievakjes en meer. Gedetecteerde velden worden als voorstel weergegeven zodat u ze kunt controleren."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "We'll scan your document to find signature fields and identify who needs to sign. Detected recipients will be suggested for you to review."
-msgstr ""
+msgstr "We scannen uw document om handtekeningvelden te vinden en te bepalen wie moet ondertekenen. Gedetecteerde ontvangers worden als voorstel weergegeven zodat u ze kunt controleren."
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
msgid "We'll send a 6-digit code to your email"
@@ -10793,6 +10874,7 @@ msgstr "Jaarlijks"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "Ja"
@@ -10905,12 +10987,12 @@ msgid "You are currently updating <0>{0}0>"
msgstr "Je werkt momenteel <0>{0}0> bij"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
+msgid "You are currently updating <0>{memberName}0>."
msgstr "Je werkt momenteel <0>{memberName}0> bij."
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
+msgid "You are currently updating <0>{organisationMemberName}0>."
msgstr "Je werkt momenteel <0>{organisationMemberName}0> bij."
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -10948,11 +11030,11 @@ msgstr "U bent niet gemachtigd om de tweefactorauthenticatie voor deze gebruiker
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "You can add fields manually in the editor."
-msgstr ""
+msgstr "U kunt velden handmatig toevoegen in de editor."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You can add recipients manually in the editor."
-msgstr ""
+msgstr "U kunt ontvangers handmatig toevoegen in de editor."
#: packages/email/template-components/template-confirmation-email.tsx
msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
@@ -10972,16 +11054,16 @@ msgstr "Je kunt de toegang inschakelen zodat alle organisatieleden standaard toe
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "Je kunt hier je e-mailvoorkeuren beheren"
+msgid "You can manage your email preferences here."
+msgstr "Je kunt hier je e-mailvoorkeuren beheren."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
-msgstr ""
+msgstr "U kunt alleen velden detecteren in concept-enveloppen"
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "Je kunt de toegang op elk moment intrekken in je teaminstellingen op Documenso <0>hier.0>"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr "Je kunt de toegang op elk moment intrekken in je teaminstellingen op Documenso, <0>hier0>."
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11014,8 +11096,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "Je kunt geen groep verwijderen die een hogere rol heeft dan jij."
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-msgid "You cannot delete this item because the document has been sent to recipients"
-msgstr "U kunt dit item niet verwijderen omdat het document al naar ontvangers is verzonden"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr "Je kunt dit item niet verwijderen, omdat het document naar ontvangers is verzonden."
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11041,8 +11123,8 @@ msgstr "Je kunt op dit moment geen documenten uploaden."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "Je kunt geen versleutelde pdf's uploaden"
+msgid "You cannot upload encrypted PDFs."
+msgstr "Je kunt geen versleutelde pdf-bestanden uploaden."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11053,8 +11135,8 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "Je hebt momenteel geen toegang tot teams binnen deze organisatie. Neem contact op met je organisatie om toegang aan te vragen."
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
-msgstr "Je hebt geen toestemming om een token voor dit team aan te maken."
+msgid "You do not have permission to create a token for this team."
+msgstr "Je hebt geen toestemming om een token voor dit team te maken."
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgid "You don't manage billing for any organisations."
@@ -11123,8 +11205,8 @@ msgstr "Je hebt nog geen documenten aangemaakt of ontvangen. Upload een document
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.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"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr "Je hebt het limiet bereikt voor het aantal bestanden per envelop."
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11279,10 +11361,14 @@ msgstr "Je moet nu bij het inloggen een code uit je authenticator‑app invoeren
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "U ontvangt een kopie van het ondertekende document per e-mail zodra iedereen heeft ondertekend."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "Je bent een beheerder. Je kunt AI-functies voor dit team direct inschakelen. Iedereen in het team ziet AI-detectie zodra deze is ingeschakeld."
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
-msgstr ""
+msgstr "U heeft te veel detectieverzoeken gedaan. Wacht een minuut voordat u het opnieuw probeert."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Your Account"
@@ -11337,6 +11423,10 @@ msgstr "Je huidige abonnement is achterstallig."
msgid "Your direct signing templates"
msgstr "Je directe ondertekeningssjablonen"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "De inhoud van je document wordt veilig naar onze AI-aanbieder verzonden uitsluitend voor detectie en wordt niet opgeslagen of gebruikt voor training."
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11372,14 +11462,14 @@ msgstr "Je document is succesvol gedupliceerd."
msgid "Your document has been uploaded successfully."
msgstr "Je document is succesvol geüpload."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Je document is succesvol geüpload. Je wordt doorgestuurd naar de sjabloonpagina."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Your document is processed securely using AI services that don't retain your data."
-msgstr ""
+msgstr "Uw document wordt veilig verwerkt met AI-diensten die uw gegevens niet bewaren."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
diff --git a/packages/lib/translations/pl/web.po b/packages/lib/translations/pl/web.po
index 84002a7ad..cb8ddd0c4 100644
--- a/packages/lib/translations/pl/web.po
+++ b/packages/lib/translations/pl/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: pl\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2025-11-27 18:05\n"
+"PO-Revision-Date: 2025-12-15 02:39\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
@@ -68,7 +68,7 @@ msgstr "{0, plural, one {Przekroczono 1 znak} few {Przekroczono # znaki} many {P
#. placeholder {2}: table.getFilteredSelectedRowModel().rows.length
#: packages/ui/primitives/data-table-pagination.tsx
msgid "{0, plural, one {{1} of # row selected.} other {{2} of # rows selected.}}"
-msgstr ""
+msgstr "{0, plural, one {Zaznaczono {1} z # wiersza.} few {Zaznaczono {2} z # wierszy.} many {Zaznaczono {2} z # wierszy.} other {Zaznaczono {2} z # wierszy.}}"
#. placeholder {0}: Math.abs(remaningLength)
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
@@ -101,6 +101,11 @@ msgstr "{0, plural, one {1 pole} few {# pola} many {# pól} other {# pola}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, one {# folder} few {# foldery} many {# folderów} other {# folderów}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, one {Dodano # odbiorcę na podstawie wykrycia przez AI.} few {Dodano # odbiorców na podstawie wykrycia przez AI.} many {Dodano # odbiorców na podstawie wykrycia przez AI.} other {Dodano # odbiorców na podstawie wykrycia przez AI.}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -151,11 +156,44 @@ msgstr "{0, plural, one {1 pasujące pole} few {# pasujące pola} many {# pasuj
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 odbiorca} few {# odbiorców} many {# odbiorców} other {# odbiorców}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, one {Strona {1} z {2} - znaleziono # pole} few {Strona {3} z {4} - znaleziono # pola} many {Strona {3} z {4} - znaleziono # pól} other {Strona {3} z {4} - znaleziono # pól}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, one {Strona {1} z {2} - znaleziono # odbiorcę} few {Strona {3} z {4} - znaleziono # odbiorców} many {Strona {3} z {4} - znaleziono # odbiorców} other {Strona {3} z {4} - znaleziono # odbiorców}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, one {Odbiorca został dodany} few {Odbiorcy zostali dodani} many {Odbiorcy zostali dodani} other {Odbiorcy zostali dodani}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Oczekiwanie na 1 odbiorcę} few {Oczekiwanie na # odbiorców} many {Oczekiwanie na # odbiorców} other {Oczekiwanie na # odbiorców}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, one {Znaleźliśmy # pole w dokumencie.} few {Znaleźliśmy # pola w dokumencie.} many {Znaleźliśmy # pól w dokumencie.} other {Znaleźliśmy # pól w dokumencie.}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, one {Znaleźliśmy # odbiorcę w dokumencie.} few {Znaleźliśmy # odbiorców w dokumencie.} many {Znaleźliśmy # odbiorców w dokumencie.} other {Znaleźliśmy # odbiorców w dokumencie.}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -200,11 +238,6 @@ msgstr "Pozostało {0} z {1} dokumentów w tym miesiącu."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "Sprawdź i {recipientActionVerb} dokument „{2}” utworzony przez użytkownika {0} z zespołu „{1}”."
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr ""
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -279,7 +312,7 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {Nie możesz mieć więcej niż # klucz d
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}"
-msgstr ""
+msgstr "{maximumEnvelopeItemCount, plural, one {Nie możesz przesłać więcej niż # element na kopertę.} few {Nie możesz przesłać więcej niż # elementy na kopertę.} many {Nie możesz przesłać więcej niż # elementów na kopertę.} other {Nie możesz przesłać więcej niż # elementów na kopertę.}}"
#: packages/lib/utils/document-audit-logs.ts
msgid "{prefix} added a field"
@@ -514,39 +547,39 @@ msgstr "Organizacja <0>{organisationName}0> poprosiła o połączenie Twojego
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to approve this document"
-msgstr ""
+msgstr "Użytkownik <0>{senderName} {senderEmail}0> zaprosił Cię do zatwierdzenia dokumentu"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to assist this document"
-msgstr ""
+msgstr "Użytkownik <0>{senderName} {senderEmail}0> zaprosił Cię do przygotowania dokumentu"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to sign this document"
-msgstr ""
+msgstr "Użytkownik <0>{senderName} {senderEmail}0> zaprosił Cię do podpisania dokumentu"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to view this document"
-msgstr ""
+msgstr "Użytkownik <0>{senderName} {senderEmail}0> zaprosił Cię do wyświetlenia dokumentu"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to approve this document"
-msgstr ""
+msgstr "Użytkownik <0>{senderName} {senderEmail}0> z zespołu „{0}” zaprosił Cię do zatwierdzenia dokumentu"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to assist this document"
-msgstr ""
+msgstr "Użytkownik <0>{senderName} {senderEmail}0> z zespołu „{0}” zaprosił Cię do przygotowania dokumentu"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to sign this document"
-msgstr ""
+msgstr "Użytkownik <0>{senderName} {senderEmail}0> z zespołu „{0}” zaprosił Cię do podpisania dokumentu"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to view this document"
-msgstr ""
+msgstr "Użytkownik <0>{senderName} {senderEmail}0> z zespołu „{0}” zaprosił Cię do wyświetlenia dokumentu"
#: packages/email/templates/confirm-team-email.tsx
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
@@ -558,7 +591,7 @@ msgstr "<0>Zarządzanie kontem:0> Zmienianie ustawień konta i uprawnień"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Admins only0> - Only admins can access and view the document"
-msgstr ""
+msgstr "<0>Tylko dla administratorów0> – Tylko administratorzy mogą uzyskać dostęp do dokumentu i go wyświetlić"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Data access:0> Access all data associated with your account"
@@ -579,7 +612,7 @@ msgstr "<0>Zdarzenia:0> Wszystkie"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Everyone0> - Everyone can access and view the document"
-msgstr ""
+msgstr "<0>Wszyscy0> – Każdy może uzyskać dostęp do dokumentu i go wyświetlić"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Full account access:0> View all your profile information, settings, and activity"
@@ -591,7 +624,7 @@ msgstr "<0>Odziedzicz metodę uwierzytelniania0> – Użyj metody uwierzytelni
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Managers and above0> - Only managers and above can access and view the document"
-msgstr ""
+msgstr "<0>Managerowie i wyżej0> – Tylko managerowie i wyżej mogą uzyskać dostęp do dokumentu"
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "<0>No restrictions0> - No authentication required"
@@ -851,9 +884,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "Prośba użycia Twojego adresu e-mail została wysłana przez zespół {0} w Documenso"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "Sekret, który zostanie wysłany na Twój adres URL, abyś mógł zweryfikować, że prośba została wysłana przez Documenso"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Sekret, który zostanie wysłany na Twój adres URL, abyś mógł zweryfikować, że prośba została wysłana przez Documenso."
@@ -951,11 +981,11 @@ msgstr "Konto zostało włączone"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account link declined"
-msgstr ""
+msgstr "Połączenie konta zostało odrzucone"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account linked successfully"
-msgstr ""
+msgstr "Konto zostało połączone"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account Linking Request"
@@ -1012,12 +1042,12 @@ msgstr "Akcje"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.members.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings._index.tsx
msgid "Active"
-msgstr "Aktywne"
+msgstr "Aktywny"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Active"
-msgstr ""
+msgstr "Aktywna"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -1114,7 +1144,7 @@ msgstr "Dodaj domenę"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Add fields"
-msgstr ""
+msgstr "Dodaj pola"
#: apps/remix/app/components/general/document/document-edit-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
@@ -1182,7 +1212,7 @@ msgstr "Dodaj domyślny tekst"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Add recipients"
-msgstr ""
+msgstr "Dodaj odbiorców"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Add Recipients"
@@ -1286,7 +1316,11 @@ msgstr "Przesłany dokument zostanie automatycznie dodany do Twojej strony dokum
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "AI Features"
-msgstr ""
+msgstr "Funkcje AI"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "Funkcje AI są wyłączone w zespole. Poproś właściciela zespołu lub organizacji o ich włączenie."
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -1384,7 +1418,7 @@ msgstr "Zezwalaj na uwierzytelnianie za pomocą biometrii, menedżerów haseł,
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Almost done"
-msgstr ""
+msgstr "Prawie gotowe"
#: apps/remix/app/components/forms/signup.tsx
msgid "Already have an account? <0>Sign in instead0>"
@@ -1478,7 +1512,7 @@ msgstr "Wystąpił błąd podczas automatycznego podpisywania dokumentu. Niektó
#: apps/remix/app/components/general/document-signing/document-signing-form.tsx
msgid "An error occurred while completing the document. Please try again."
-msgstr ""
+msgstr "Wystąpił błąd podczas próby zakończenia dokumentu. Spróbuj ponownie."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "An error occurred while creating document from template."
@@ -1526,7 +1560,7 @@ msgstr "Wystąpił błąd podczas przenoszenia szablonu."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "An error occurred while rejecting the document. Please try again."
-msgstr ""
+msgstr "Wystąpił błąd podczas odrzucania dokumentu. Spróbuj ponownie."
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
#: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx
@@ -1692,11 +1726,11 @@ msgstr "Wystąpił nieznany błąd podczas przenoszenia folderu."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Analyzing page layout"
-msgstr ""
+msgstr "Analizowanie układu strony"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Analyzing pages"
-msgstr ""
+msgstr "Analizowanie stron"
#: apps/remix/app/routes/_authenticated+/inbox.tsx
msgid "Any documents that you have been invited to will appear here"
@@ -2265,6 +2299,10 @@ msgstr "Wykresy"
msgid "Checkbox"
msgstr "Pole wyboru"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "Opcja pola wyboru"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "Ustawienia pola wyboru"
@@ -2368,6 +2406,7 @@ msgstr "Sekret klienta"
msgid "Client secret is required"
msgstr "Sekret klienta jest wymagany"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2380,7 +2419,6 @@ msgstr "Sekret klienta jest wymagany"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2391,7 +2429,9 @@ msgstr "Sekret klienta jest wymagany"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "Zamknij"
@@ -2584,7 +2624,7 @@ msgstr "Zawartość"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Context"
-msgstr ""
+msgstr "Kontekst"
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
@@ -2667,13 +2707,13 @@ msgstr "Skopiowano"
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field"
-msgstr ""
+msgstr "Skopiowano pole"
#: apps/remix/app/components/embed/authoring/configure-fields-view.tsx
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field to clipboard"
-msgstr ""
+msgstr "Pole zostało skopiowane do schowka"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
@@ -3020,7 +3060,7 @@ msgstr "Ustawienia daty"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "David is the Employee, Lucas is the Manager"
-msgstr ""
+msgstr "David jest pracownikiem. Lucas jest managerem."
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -3069,6 +3109,10 @@ msgstr "Domyślna strefa czasowa"
msgid "Default Value"
msgstr "Domyślna wartość"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "usuń"
@@ -3234,48 +3278,48 @@ msgstr "Szczegóły"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect"
-msgstr ""
+msgstr "Wykryj"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detect fields"
-msgstr ""
+msgstr "Wykryj pola"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect recipients"
-msgstr ""
+msgstr "Wykryj odbiorców"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
msgid "Detect recipients with AI"
-msgstr ""
+msgstr "Wykryj odbiorców za pomocą AI"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Detect with AI"
-msgstr ""
+msgstr "Wykryj za pomocą AI"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detected fields"
-msgstr ""
+msgstr "Wykryte pola"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detected recipients"
-msgstr ""
+msgstr "Wykryci odbiorcy"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting fields"
-msgstr ""
+msgstr "Wykrywanie pól"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detecting recipients"
-msgstr ""
+msgstr "Wykrywanie odbiorców"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting signature areas"
-msgstr ""
+msgstr "Wykrywanie pól podpisu"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detection failed"
-msgstr ""
+msgstr "Wykrywanie nie powiodło się"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Developer Mode"
@@ -3288,7 +3332,7 @@ msgid "Device"
msgstr "Urządzenie"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
msgstr "To nie Twoja prośba? Jesteśmy tutaj, aby pomóc Ci zabezpieczyć konto. <0>Skontaktuj się z nami0>."
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
@@ -3543,7 +3587,7 @@ msgstr "Tworzenie dokumentu"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "Document deleted"
-msgstr "Dokument usunięty"
+msgstr "Usunięto dokument"
#: packages/lib/utils/document-audit-logs.ts
msgctxt "Audit log format"
@@ -3632,6 +3676,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "Otwarto dokument"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "Dokument oczekujący"
@@ -3658,7 +3707,7 @@ msgstr "Dokument został ponownie wysłany"
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document rejected"
-msgstr "Dokument odrzucony"
+msgstr "Odrzucono dokument"
#: apps/remix/app/components/embed/embed-document-rejected.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
@@ -3830,6 +3879,11 @@ msgstr "Nazwa domeny"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Nie masz konta? <0>Zarejestruj się0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "Nie przenoś (usuń wszystkie dokumenty)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3968,6 +4022,7 @@ msgstr "Np. 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4184,9 +4239,18 @@ msgstr "Włącz konto"
msgid "Enable Account"
msgstr "Włącz konto"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "Włącz wykrywanie za pomocą AI"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "Włącz funkcje AI"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
-msgstr ""
+msgstr "Włącz funkcje oparte na sztucznej inteligencji, takie jak automatyczne wykrywanie odbiorców. Po włączeniu tej funkcji treść dokumentu zostanie przesłana do dostawców usług AI. Korzystamy wyłącznie z usług, które nie wykorzystują danych do trenowania modeli i preferujemy przetwarzanie danych w rejonach europejskich, o ile są dostępne."
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
msgid "Enable Authenticator App"
@@ -4224,6 +4288,10 @@ msgstr "Włącz kolejność podpisywania"
msgid "Enable SSO portal"
msgstr "Włącz logowanie SSO"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4422,11 +4490,11 @@ msgstr "Błąd"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error declining account link"
-msgstr ""
+msgstr "Wystąpił błąd podczas odrzucania połączenia konta"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error linking account"
-msgstr ""
+msgstr "Wystąpił błąd podczas łączenia konta"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "Error uploading file"
@@ -4484,7 +4552,7 @@ msgstr "Identyfikator zewnętrzny"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Extracting contact details"
-msgstr ""
+msgstr "Wyodrębnianie danych kontaktowych"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -4493,7 +4561,7 @@ msgstr "Niepowodzenie"
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
msgid "Failed to complete the document. Please try again."
-msgstr ""
+msgstr "Nie udało się zakończyć dokumentu. Spróbuj ponownie."
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Failed to create folder"
@@ -4565,7 +4633,7 @@ msgstr "Nie udało się zaktualizować webhooku"
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
msgid "Failed to upload CSV. Please check the file format and try again."
-msgstr ""
+msgstr "Nie udało się przesłać pliku CSV. Sprawdź format pliku i spróbuj ponownie."
#: packages/email/templates/bulk-send-complete.tsx
msgid "Failed: {failedCount}"
@@ -4725,13 +4793,13 @@ msgstr "Nie pamiętasz hasła?"
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
msgctxt "Plan price"
msgid "Free"
-msgstr ""
+msgstr "Darmowy"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Free"
-msgstr ""
+msgstr "Darmowa"
#: packages/lib/utils/fields.ts
#: packages/ui/primitives/document-flow/types.ts
@@ -4822,10 +4890,26 @@ msgstr "Przejdź do strony głównej"
msgid "Go to document"
msgstr "Przejdź do dokumentu"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "Przejdź do pierwszej strony"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "Przejdź do ostatniej strony"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "Przejdź do następnej strony"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "Przejdź do właściciela"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "Przejdź do poprzedniej strony"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "Przejdź do zespołu"
@@ -4883,7 +4967,7 @@ msgstr "Przygotuj dokument dla innych podpisujących."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Help the AI assign fields to the right recipients."
-msgstr ""
+msgstr "Pomóż AI przypisać pola do właściwych odbiorców."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains._index.tsx
msgid "Here you can add email domains to your organisation."
@@ -4906,7 +4990,7 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "Tutaj możesz ustawić ustawienia brandingu dla swojej organizacji. Zespoły odziedziczą domyślne ustawienia."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
+msgid "Here you can set branding preferences for your team."
msgstr "Tutaj możesz ustawić branding dla swojego zespołu."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
@@ -4922,11 +5006,11 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "Tutaj możesz ustawić domyślne ustawienia zespołu."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
+msgid "Here you can set your general branding preferences."
msgstr "Tutaj możesz ustawić ogólne ustawienia brandingu."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
+msgid "Here you can set your general document preferences."
msgstr "Tutaj możesz ustawić ogólne ustawienia dokumentów."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -5020,11 +5104,11 @@ msgstr "Identyfikator został skopiowany do schowka"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Identifying input fields"
-msgstr ""
+msgstr "Identyfikowanie pól formularzy"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Identifying recipients"
-msgstr ""
+msgstr "Identyfikowanie odbiorców"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
msgid "If there is any issue with your subscription, please contact us at <0>{SUPPORT_EMAIL}0>."
@@ -5053,7 +5137,7 @@ msgstr "Uwaga: Co to oznacza"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Inactive"
-msgstr ""
+msgstr "Nieaktywna"
#: apps/remix/app/components/general/app-nav-mobile.tsx
#: apps/remix/app/components/general/app-nav-mobile.tsx
@@ -5092,6 +5176,7 @@ msgstr "Odziedzicz metodę uwierzytelniania"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5477,13 +5562,14 @@ msgstr "Logi"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Looking for form fields"
-msgstr ""
+msgstr "Wyszukiwanie pól formularza"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Looking for signature fields"
-msgstr ""
+msgstr "Wyszukiwanie pól podpisu"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5544,6 +5630,10 @@ msgstr "Zarządzaj połączonymi kontami"
msgid "Manage organisation"
msgstr "Zarządzaj organizacją"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "Zarządzaj organizacjami"
@@ -5636,7 +5726,7 @@ msgstr "Managerowie i wyżej"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Mapping fields to recipients"
-msgstr ""
+msgstr "Mapowanie pól dla odbiorców"
#: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx
msgid "Mark as viewed"
@@ -5707,15 +5797,15 @@ msgstr "Data dołączenia"
msgid "Members"
msgstr "Użytkownicy"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "Wiadomość"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "Wiadomość <0>(opcjonalnie)0>"
@@ -5865,10 +5955,6 @@ msgstr "Nigdy nie wygasa"
msgid "New Password"
msgstr "Nowe hasło"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "Nowy szablon"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5894,6 +5980,7 @@ msgstr "Nazwa następnego odbiorcy"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "Nie"
@@ -5909,11 +5996,11 @@ msgstr "Nie znaleziono dokumentów"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No email detected"
-msgstr ""
+msgstr "Nie wykryto adresu e-mail"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "No fields were detected in your document."
-msgstr ""
+msgstr "Nie wykryto żadnych pól."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
@@ -5961,7 +6048,7 @@ msgstr "Brak odbiorców"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No recipients were detected in your document."
-msgstr ""
+msgstr "Nie wykryto żadnych odbiorców."
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
#: packages/ui/primitives/recipient-selector.tsx
@@ -6101,8 +6188,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "Po zeskanowaniu kodu QR lub ręcznym wprowadzeniu kodu, wpisz poniżej kod wygenerowany przez aplikację uwierzytelniającą."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "Po zaktualizowaniu rekordów DNS może minąć do 48 godzin, zanim zmiany zostaną wprowadzone. Po zakończeniu propagacji DNS wróć do strony i kliknij przycisk domeny „Synchronizuj”"
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "Po zaktualizowaniu rekordów DNS może minąć do 48 godzin, zanim zmiany zostaną wprowadzone. Po zakończeniu propagacji DNS wróć do strony i kliknij przycisk domeny „Synchronizuj”."
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6136,6 +6223,10 @@ msgstr "Dozwolone są tylko pliki PDF"
msgid "Oops! Something went wrong."
msgstr "Ups! Coś poszło nie tak."
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "Otwórz menu"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "Otwarto"
@@ -6329,20 +6420,6 @@ msgstr "Nowym właścicielem został użytkownik {organisationMemberName}"
msgid "Page {0} of {1}"
msgstr "Strona {0} z {1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr ""
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr ""
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6352,7 +6429,7 @@ msgstr "Strona {0} z {numPages}"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
msgctxt "Subscription status"
msgid "Paid"
-msgstr ""
+msgstr "Opłacona"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
@@ -6434,7 +6511,7 @@ msgstr "Hasło zostało zaktualizowane!"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Past Due"
-msgstr ""
+msgstr "Przeterminowana"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
@@ -6688,10 +6765,6 @@ msgstr "Wybierz inną domenę."
msgid "Please try again and make sure you enter the correct email address."
msgstr "Spróbuj ponownie i upewnij się, że adres e-mail jest prawidłowy."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "Spróbuj ponownie później."
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6873,7 +6946,7 @@ msgstr "Przeczytaj <0>informacje o podpisie elektronicznym0>."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Reading your document"
-msgstr ""
+msgstr "Odczytywanie dokumentu"
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
msgid "Ready"
@@ -6936,7 +7009,7 @@ msgstr "Odbiorca"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
msgid "Recipient {0}"
-msgstr ""
+msgstr "Odbiorca {0}"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/components/recipient/recipient-action-auth-select.tsx
@@ -6969,10 +7042,6 @@ msgstr "Odbiorca został zaktualizowany"
msgid "Recipients"
msgstr "Odbiorcy"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr ""
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "Metryki odbiorców"
@@ -7122,7 +7191,7 @@ msgstr "Usuń użytkownika organizacji"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
-msgstr ""
+msgstr "Usuń odbiorcę"
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
msgid "Remove team email"
@@ -7146,8 +7215,8 @@ msgstr "Odpowiedz na adres"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "Odpowiedz na adres"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "Odpowiedź na e-mail <0>(opcjonalnie)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7284,6 +7353,11 @@ msgstr "Spróbuj ponownie"
msgid "Return"
msgstr "Wróć"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "Powrót do strony logowania Documenso"
@@ -7450,6 +7524,7 @@ msgid "See the background jobs tab for the status"
msgstr "Zobacz kartę zadań w tle, aby sprawdzić status"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8071,7 +8146,7 @@ msgstr "Ustawienia strony"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Skip"
-msgstr ""
+msgstr "Pomiń"
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -8089,7 +8164,6 @@ msgstr "Niektórym podpisującym nie przypisano pola podpisu. Przypisz co najmni
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8134,11 +8208,11 @@ msgstr "Coś poszło nie tak podczas próby weryfikacji adresu e-mail zespołu <
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Something went wrong while detecting fields."
-msgstr ""
+msgstr "Coś poszło nie tak podczas wykrywania pól."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Something went wrong while detecting recipients."
-msgstr ""
+msgstr "Coś poszło nie tak podczas wykrywania odbiorców."
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
@@ -8252,14 +8326,14 @@ msgstr "Klient Stripe został utworzony"
msgid "Stripe Customer ID"
msgstr "Identyfikator klienta Stripe"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "Temat"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "Temat <0>(opcjonalnie)0>"
@@ -8580,7 +8654,6 @@ msgstr "Zespoły, do których przypisana jest grupa organizacji"
msgid "Template"
msgstr "Szablon"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: packages/ui/primitives/document-upload-button.tsx
msgid "Template (Legacy)"
msgstr "Szablon (starsza wersja)"
@@ -8593,7 +8666,7 @@ msgstr "Szablon został utworzony"
msgid "Template deleted"
msgstr "Szablon został usunięty"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "Szablon dokumentu został przesłany"
@@ -8655,10 +8728,6 @@ msgstr "Szablon został przesłany"
msgid "Templates"
msgstr "Szablony"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "Szablony umożliwiają szybkie generowanie dokumentów z wcześniej wypełnionymi polami i odbiorcami."
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "Testuj"
@@ -8765,7 +8834,7 @@ msgstr "Nazwa wyświetlana dla adresu e-mail"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
-msgstr ""
+msgstr "Dokument został pomyślnie usunięty."
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
msgid "The document has been moved successfully."
@@ -8773,7 +8842,7 @@ msgstr "Dokument został pomyślnie przeniesiony."
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "The document has been successfully rejected."
-msgstr ""
+msgstr "Dokument został odrzucony."
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "The document is already saved and cannot be changed."
@@ -8792,6 +8861,12 @@ msgstr "Właściciel został poinformowany o odrzuceniu dokumentu. Może się z
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "Właściciel dokumentu został poinformowany o Twojej decyzji. Może się z Tobą skontaktować, jeśli będzie to konieczne."
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "Dokument został utworzony, ale nie mógł zostać wysłany do odbiorców."
@@ -8826,8 +8901,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
msgstr "Domena, której szukasz, mogła zostać usunięta, zmieniona lub mogła nigdy nie istnieć."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The email or password provided is incorrect"
-msgstr "Adres e-mail lub hasło są nieprawidłowe"
+msgid "The email or password provided is incorrect."
+msgstr "Adres e-mail lub hasło są nieprawidłowe."
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -8860,7 +8935,7 @@ msgstr "Wystąpiły następujące błędy:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following recipients require an email address:"
-msgstr ""
+msgstr "Następujący odbiorcy wymagają adresu e-mail:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following signers are missing signature fields:"
@@ -9025,8 +9100,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "Token użyty do zresetowania hasła wygasł lub nie istnieje. Jeśli nadal nie pamiętasz hasła, poproś o nowy link."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "Kod weryfikacyjny jest nieprawidłowy"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr "Kod weryfikacyjny jest nieprawidłowy."
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9051,7 +9126,7 @@ msgstr "Weryfikacja dwuetapowa została zresetowana."
#: packages/ui/components/document/document-visibility-select.tsx
msgid "The visibility of the document to the recipient."
-msgstr ""
+msgstr "Widoczność dokumentu dla odbiorcy."
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
@@ -9122,7 +9197,7 @@ msgstr "Ta akcja jest odwracalna, ale zachowaj ostrożność, ponieważ konto mo
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "This can take a minute or two depending on the size of your document."
-msgstr ""
+msgstr "Może to potrwać minutę lub dwie, w zależności od rozmiaru dokumentu."
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
msgid "This claim is locked and cannot be deleted."
@@ -9196,7 +9271,7 @@ msgid "This document was created using a direct link."
msgstr "Dokument został utworzony za pomocą bezpośredniego linku."
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
+msgid "This document was sent using <0>Documenso0>."
msgstr "Dokument został wysłany za pomocą <0>Documenso0>."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
@@ -9502,7 +9577,7 @@ msgstr "Nazwa tokena"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Too many requests"
-msgstr ""
+msgstr "Zbyt wiele żądań"
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
msgid "Top"
@@ -9528,6 +9603,10 @@ msgstr "Łączna liczba podpisujących, którzy się zarejestrowali"
msgid "Total Users"
msgstr "Łączna liczba użytkowników"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "Przenieś dokumenty do innego zespołu"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9538,7 +9617,11 @@ msgstr "Wyzwalacze"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Try again"
-msgstr ""
+msgstr "Spróbuj ponownie"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "Włącz wykrywanie za pomocą AI, aby automatycznie znaleźć odbiorców i pola w dokumentach. Dostawcy AI nie wykorzystują danych do trenowania modeli."
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
@@ -9686,6 +9769,10 @@ msgstr "Nieautoryzowany"
msgid "Uncompleted"
msgstr "Niezakończono"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "Cofnij"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -9704,7 +9791,7 @@ msgstr "Nieznany błąd"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Unknown name"
-msgstr ""
+msgstr "Nieznana nazwa"
#: apps/remix/app/components/tables/admin-claims-table.tsx
msgid "Unlimited"
@@ -10298,7 +10385,7 @@ msgstr "Oczekiwanie na Ciebie"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
msgstr "Chcesz wysyłać eleganckie linki do podpisywania, takie jak ten? <0>Sprawdź Documenso0>."
#: apps/remix/app/routes/_profile+/_layout.tsx
@@ -10334,6 +10421,10 @@ msgstr "Nie mogliśmy zaktualizować klucza dostępu. Spróbuj ponownie późnie
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "Nie mogliśmy utworzyć klienta Stripe. Spróbuj ponownie."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "Nie mogliśmy włączyć funkcji AI. Spróbuj ponownie."
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "Nie mogliśmy zaktualizować grupy. Spróbuj ponownie."
@@ -10417,7 +10508,7 @@ msgstr "Wystąpił nieznany błąd podczas próby usunięcia konta. Spróbuj pon
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "We encountered an unknown error while attempting to delete your document. Please try again later."
-msgstr ""
+msgstr "Wystąpił nieznany błąd podczas próby usunięcia dokumentu. Spróbuj ponownie później."
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
msgid "We encountered an unknown error while attempting to disable access."
@@ -10534,16 +10625,6 @@ msgstr "Wystąpił nieznany błąd podczas próby zaktualizowania adresu e-mail.
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "Wystąpił nieznany błąd podczas próby zaktualizowania profilu. Spróbuj ponownie później."
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr ""
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr ""
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "Wysłaliśmy wiadomość weryfikacyjną."
@@ -10637,11 +10718,11 @@ msgstr "Skontaktujemy się z Tobą wkrótce."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "We'll scan your document to find form fields like signature lines, text inputs, checkboxes, and more. Detected fields will be suggested for you to review."
-msgstr ""
+msgstr "Przeskanujemy dokument, aby znaleźć pola formularzy, takie jak linie podpisu, pola tekstowe, pola wyboru i inne. Wykryte pola zostaną zaproponowane do sprawdzenia."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "We'll scan your document to find signature fields and identify who needs to sign. Detected recipients will be suggested for you to review."
-msgstr ""
+msgstr "Przeskanujemy dokument, aby znaleźć pola podpisów i zidentyfikować podpisujących. Wykryte pola zostaną zaproponowane do sprawdzenia."
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
msgid "We'll send a 6-digit code to your email"
@@ -10793,6 +10874,7 @@ msgstr "Rocznie"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "Tak"
@@ -10905,13 +10987,13 @@ msgid "You are currently updating <0>{0}0>"
msgstr "Aktualizujesz adres <0>{0}0>"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
-msgstr "Aktualizujesz użytkownika <0>{memberName}0>."
+msgid "You are currently updating <0>{memberName}0>."
+msgstr "Aktualizujesz adres <0>{memberName}0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
-msgstr "Aktualizujesz użytkownika <0>{organisationMemberName}0>."
+msgid "You are currently updating <0>{organisationMemberName}0>."
+msgstr "Aktualnie aktualizujesz <0>{organisationMemberName}0>."
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
msgid "You are currently updating the <0>{passkeyName}0> passkey."
@@ -10948,11 +11030,11 @@ msgstr "Nie masz uprawnień do zresetowania weryfikacji dwuetapowej tego użytko
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "You can add fields manually in the editor."
-msgstr ""
+msgstr "Możesz ręcznie dodać pola w edytorze."
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You can add recipients manually in the editor."
-msgstr ""
+msgstr "Możesz ręcznie dodać odbiorców w edytorze."
#: packages/email/template-components/template-confirmation-email.tsx
msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
@@ -10972,15 +11054,15 @@ msgstr "Możesz włączyć domyślny dostęp, aby wszyscy użytkownicy organizac
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
+msgid "You can manage your email preferences here."
msgstr "Tutaj możesz zarządzać ustawieniami wiadomości."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
-msgstr ""
+msgstr "Możesz wykrywać pola tylko w kopertach w wersji roboczej"
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
msgstr "W każdej chwili możesz unieważnić dostęp w <0>ustawieniach zespołu0> w Documenso."
#: apps/remix/app/components/forms/public-profile-form.tsx
@@ -11014,8 +11096,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "Nie możesz usunąć grupy, która ma wyższą rolę niż Ty."
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-msgid "You cannot delete this item because the document has been sent to recipients"
-msgstr "Nie możesz usunąć elementu, ponieważ dokument został wysłany do odbiorców"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr "Nie możesz usunąć elementu, ponieważ dokument został wysłany do odbiorców."
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11041,8 +11123,8 @@ msgstr "Nie możesz przesyłać dokumentów w tej chwili."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "Nie możesz przesyłać zaszyfrowanych plików PDF"
+msgid "You cannot upload encrypted PDFs."
+msgstr "Nie możesz przesyłać zaszyfrowanych plików PDF."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11053,8 +11135,8 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "Obecnie nie masz dostępu do żadnych zespołów w organizacji. Skontaktuj się z organizacją, aby poprosić o dostęp."
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
-msgstr "Nie masz uprawnień do utworzenia tokena dla tego zespołu"
+msgid "You do not have permission to create a token for this team."
+msgstr "Nie masz uprawnień do utworzenia tokena dla tego zespołu."
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgid "You don't manage billing for any organisations."
@@ -11123,8 +11205,8 @@ msgstr "Brak utworzonych lub odebranych dokumentów. Prześlij, aby utworzyć."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You have reached the limit of the number of files per envelope"
-msgstr "Osiągnięto maksymalną liczbę plików na kopertę"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr "Osiągnięto maksymalną liczbę plików na kopertę."
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11279,10 +11361,14 @@ msgstr "Kod z aplikacji uwierzytelniającej będzie wymagany podczas logowania."
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "Otrzymasz kopię dokumentu, gdy wszyscy go podpiszą."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "Jesteś administratorem. Możesz od razu włączyć funkcje AI dla zespołu. Po włączeniu funkcji użytkownicy zespołu będą widzieć wykryte przez AI treści."
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
-msgstr ""
+msgstr "Wysłano zbyt wiele żądań wykrywania. Poczekaj minutę przed ponowną próbą."
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Your Account"
@@ -11337,6 +11423,10 @@ msgstr "Obecny plan jest niezapłacony."
msgid "Your direct signing templates"
msgstr "Twoje bezpośrednie szablony do podpisywania"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "Treść dokumentu zostanie bezpiecznie przesłana do naszego dostawcy AI wyłącznie w celu wykrycia pół i nie będzie przechowywana ani wykorzystywana do trenowania modeli."
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11372,14 +11462,14 @@ msgstr "Twój dokument został pomyślnie zduplikowany."
msgid "Your document has been uploaded successfully."
msgstr "Twój dokument został pomyślnie przesłany."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Dokument został pomyślnie przesłany. Zostaniesz przekierowany na stronę szablonu."
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Your document is processed securely using AI services that don't retain your data."
-msgstr ""
+msgstr "Dokument jest przetwarzany w bezpieczny sposób za pomocą usług AI, które nie wykorzystują Twoich danych."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
diff --git a/packages/lib/translations/pt-BR/web.po b/packages/lib/translations/pt-BR/web.po
index 0e7a3d3fd..066ee9990 100644
--- a/packages/lib/translations/pt-BR/web.po
+++ b/packages/lib/translations/pt-BR/web.po
@@ -96,6 +96,11 @@ msgstr "{0, plural, one {# campo} other {# campos}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, one {# pasta} other {# pastas}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr ""
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -146,11 +151,44 @@ msgstr "{0, plural, one {1 campo correspondente} other {# campos correspondentes
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Destinatário} other {# Destinatários}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr ""
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr ""
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr ""
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Aguardando 1 destinatário} other {Aguardando # destinatários}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr ""
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr ""
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -195,11 +233,6 @@ msgstr "{0} de {1} documentos restantes este mês."
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} em nome de \"{1}\" convidou você para {recipientActionVerb} o documento \"{2}\"."
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr "{0} destinatário(s) foram adicionados pela detecção de IA."
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -846,9 +879,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "Uma solicitação para usar seu e-mail foi iniciada por {0} no Documenso"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "Um segredo que será enviado para sua URL para que você possa verificar se a solicitação foi enviada pelo Documenso"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Um segredo que será enviado para sua URL para que você possa verificar se a solicitação foi enviada pelo Documenso."
@@ -1283,6 +1313,10 @@ msgstr "Após o envio, um documento será gerado automaticamente e adicionado à
msgid "AI Features"
msgstr "Recursos de IA"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "All"
@@ -2260,6 +2294,10 @@ msgstr "Gráficos"
msgid "Checkbox"
msgstr "Caixa de seleção"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr ""
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "Configurações da Caixa de Seleção"
@@ -2363,6 +2401,7 @@ msgstr "Segredo do Cliente"
msgid "Client secret is required"
msgstr "Segredo do Cliente é obrigatório"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2375,7 +2414,6 @@ msgstr "Segredo do Cliente é obrigatório"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2386,7 +2424,9 @@ msgstr "Segredo do Cliente é obrigatório"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "Fechar"
@@ -3064,6 +3104,10 @@ msgstr "Fuso Horário Padrão"
msgid "Default Value"
msgstr "Valor Padrão"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "excluir"
@@ -3283,8 +3327,8 @@ msgid "Device"
msgstr "Dispositivo"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "Não solicitou uma alteração de senha? Estamos aqui para ajudá-lo a proteger sua conta, basta <0>entrar em contato conosco.0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr ""
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3627,6 +3671,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "Documento aberto"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "Documento pendente"
@@ -3825,6 +3874,11 @@ msgstr "Nome do Domínio"
msgid "Don't have an account? <0>Sign up0>"
msgstr "Não tem uma conta? <0>Inscreva-se0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr ""
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3963,6 +4017,7 @@ msgstr "Ex: 100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4179,6 +4234,15 @@ msgstr "Ativar conta"
msgid "Enable Account"
msgstr "Ativar Conta"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr ""
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr ""
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
msgstr "Ative recursos com tecnologia de IA, como detecção automática de destinatários. Quando ativado, o conteúdo do documento será enviado para provedores de IA. Usamos apenas provedores que não retêm dados para treinamento e preferimos regiões europeias quando disponíveis."
@@ -4219,6 +4283,10 @@ msgstr "Ativar ordem de assinatura"
msgid "Enable SSO portal"
msgstr "Ativar portal SSO"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4817,10 +4885,26 @@ msgstr "Ir para o início"
msgid "Go to document"
msgstr "Ir para o documento"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr ""
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr ""
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "Ir para o proprietário"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "Ir para a equipe"
@@ -4901,8 +4985,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "Aqui você pode definir preferências de marca para sua organização. As equipes herdarão essas configurações por padrão."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "Aqui você pode definir preferências de marca para sua equipe"
+msgid "Here you can set branding preferences for your team."
+msgstr ""
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4917,12 +5001,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "Aqui você pode definir preferências e padrões para sua equipe."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "Aqui você pode definir suas preferências gerais de marca"
+msgid "Here you can set your general branding preferences."
+msgstr ""
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "Aqui você pode definir suas preferências gerais de documento"
+msgid "Here you can set your general document preferences."
+msgstr ""
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5087,6 +5171,7 @@ msgstr "Herdar método de autenticação"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5479,6 +5564,7 @@ msgid "Looking for signature fields"
msgstr "Procurando campos de assinatura"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5539,6 +5625,10 @@ msgstr "Gerenciar contas vinculadas"
msgid "Manage organisation"
msgstr "Gerenciar organização"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "Gerenciar organizações"
@@ -5702,15 +5792,15 @@ msgstr "Membro Desde"
msgid "Members"
msgstr "Membros"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "Mensagem"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "Mensagem <0>(Opcional)0>"
@@ -5860,10 +5950,6 @@ msgstr "Nunca expirar"
msgid "New Password"
msgstr "Nova Senha"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "Novo Modelo"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5889,6 +5975,7 @@ msgstr "Nome do Próximo Destinatário"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "Não"
@@ -6096,8 +6183,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "Depois de escanear o código QR ou inserir o código manualmente, insira o código fornecido pelo seu aplicativo autenticador abaixo."
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "Depois de atualizar seus registros DNS, pode levar até 48 horas para que eles sejam propagados. Assim que a propagação do DNS estiver concluída, você precisará voltar e pressionar o botão \"Sincronizar\" domínios"
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr ""
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6131,6 +6218,10 @@ msgstr "Apenas arquivos PDF são permitidos"
msgid "Oops! Something went wrong."
msgstr "Ops! Algo deu errado."
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr ""
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "Aberto"
@@ -6324,20 +6415,6 @@ msgstr "Propriedade transferida para {organisationMemberName}."
msgid "Page {0} of {1}"
msgstr "Página {0} de {1}"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr "Página {0} de {1} - {2} campo(s) encontrado(s)"
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr "Página {0} de {1} - {2} destinatário(s) encontrado(s)"
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6683,10 +6760,6 @@ msgstr "Por favor, tente um domínio diferente."
msgid "Please try again and make sure you enter the correct email address."
msgstr "Por favor, tente novamente e certifique-se de inserir o endereço de e-mail correto."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "Por favor, tente novamente mais tarde."
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6964,10 +7037,6 @@ msgstr "Destinatário atualizado"
msgid "Recipients"
msgstr "Destinatários"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr "Destinatários adicionados"
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "Métricas de destinatários"
@@ -7141,8 +7210,8 @@ msgstr "Responder ao e-mail"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "Responder Para E-mail"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr ""
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7279,6 +7348,11 @@ msgstr "Tentar novamente"
msgid "Return"
msgstr "Retornar"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "Retornar para a página de login do Documenso aqui"
@@ -7445,6 +7519,7 @@ msgid "See the background jobs tab for the status"
msgstr "Veja a aba de trabalhos em segundo plano para o status"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8084,7 +8159,6 @@ msgstr "Alguns signatários não receberam um campo de assinatura. Por favor, at
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8247,14 +8321,14 @@ msgstr "Cliente Stripe criado com sucesso"
msgid "Stripe Customer ID"
msgstr "ID do Cliente Stripe"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "Assunto"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "Assunto <0>(Opcional)0>"
@@ -8575,7 +8649,6 @@ msgstr "Equipes às quais este grupo da organização está atualmente atribuíd
msgid "Template"
msgstr "Modelo"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: packages/ui/primitives/document-upload-button.tsx
msgid "Template (Legacy)"
msgstr "Modelo (Legado)"
@@ -8588,7 +8661,7 @@ msgstr "Modelo Criado"
msgid "Template deleted"
msgstr "Modelo excluído"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "Documento de modelo enviado"
@@ -8650,10 +8723,6 @@ msgstr "Modelo enviado"
msgid "Templates"
msgstr "Modelos"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "Modelos permitem gerar documentos rapidamente com destinatários e campos pré-preenchidos."
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "Teste"
@@ -8787,6 +8856,12 @@ msgstr "O proprietário do documento foi notificado sobre esta rejeição. Nenhu
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "O proprietário do documento foi notificado sobre sua decisão. Eles podem entrar em contato com você com mais instruções, se necessário."
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "O documento foi criado, mas não pôde ser enviado aos destinatários."
@@ -8821,8 +8896,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
msgstr "O domínio de e-mail que você está procurando pode ter sido removido, renomeado ou nunca ter existido."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The email or password provided is incorrect"
-msgstr "O e-mail ou senha fornecidos estão incorretos"
+msgid "The email or password provided is incorrect."
+msgstr ""
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -9020,8 +9095,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "O token que você usou para redefinir sua senha expirou ou nunca existiu. Se você ainda esqueceu sua senha, solicite um novo link de redefinição."
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "O código de autenticação de dois fatores fornecido está incorreto"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr ""
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9099,7 +9174,6 @@ msgstr "Esta conta foi desativada. Entre em contato com o suporte."
#: apps/remix/app/components/forms/signin.tsx
msgid "This account has not been verified. Please verify your account before signing in."
msgstr "Esta conta não foi verificada. Verifique sua conta antes de entrar."
-msgstr "Esta conta não foi verificada. Verifique sua conta antes de entrar."
#: apps/remix/app/components/dialogs/admin-user-reset-two-factor-dialog.tsx
msgid "This action is irreversible. Please ensure you have informed the user before proceeding."
@@ -9192,8 +9266,8 @@ msgid "This document was created using a direct link."
msgstr "Este documento foi criado usando um link direto."
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
-msgstr "Este documento foi enviado usando <0>Documenso.0>"
+msgid "This document was sent using <0>Documenso0>."
+msgstr ""
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document will be duplicated."
@@ -9524,6 +9598,10 @@ msgstr "Total de Signatários que se Inscreveram"
msgid "Total Users"
msgstr "Total de Usuários"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9536,6 +9614,10 @@ msgstr "Gatilhos"
msgid "Try again"
msgstr "Tente novamente"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
msgstr "Autenticação de dois fatores"
@@ -9682,6 +9764,10 @@ msgstr "Não autorizado"
msgid "Uncompleted"
msgstr "Não concluído"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -10294,8 +10380,8 @@ msgstr "Aguardando Sua Vez"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "Quer enviar links de assinatura elegantes como este? <0>Confira o Documenso.0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr ""
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10330,6 +10416,10 @@ msgstr "Não conseguimos atualizar esta passkey no momento. Por favor, tente nov
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "Não conseguimos criar um cliente Stripe. Por favor, tente novamente."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "Não conseguimos atualizar o grupo. Por favor, tente novamente."
@@ -10530,16 +10620,6 @@ msgstr "Encontramos um erro desconhecido ao tentar atualizar o e-mail da equipe.
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "Encontramos um erro desconhecido ao tentar atualizar seu perfil. Por favor, tente novamente mais tarde."
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr "Encontramos {0} campo(s) no seu documento."
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr "Encontramos {0} destinatário(s) no seu documento."
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "Enviamos um e-mail de confirmação para verificação."
@@ -10789,6 +10869,7 @@ msgstr "Anual"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "Sim"
@@ -10901,13 +10982,13 @@ msgid "You are currently updating <0>{0}0>"
msgstr "Você está atualizando <0>{0}0>"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
-msgstr "Você está atualizando <0>{memberName}.0>"
+msgid "You are currently updating <0>{memberName}0>."
+msgstr ""
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
-msgstr "Você está atualizando <0>{organisationMemberName}.0>"
+msgid "You are currently updating <0>{organisationMemberName}0>."
+msgstr ""
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
msgid "You are currently updating the <0>{passkeyName}0> passkey."
@@ -10968,16 +11049,16 @@ msgstr "Você pode ativar o acesso para permitir que todos os membros da organiz
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "Você pode gerenciar suas preferências de e-mail aqui"
+msgid "You can manage your email preferences here."
+msgstr ""
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
msgstr "Você só pode detectar campos em envelopes de rascunho"
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "Você pode revogar o acesso a qualquer momento nas configurações da sua equipe no Documenso <0>aqui.0>"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr ""
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11010,8 +11091,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "Você não pode excluir um grupo que tem uma função superior à sua."
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-msgid "You cannot delete this item because the document has been sent to recipients"
-msgstr "Você não pode excluir este item porque o documento foi enviado aos destinatários"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr ""
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11037,8 +11118,8 @@ msgstr "Você não pode enviar documentos neste momento."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "Você não pode enviar PDFs criptografados"
+msgid "You cannot upload encrypted PDFs."
+msgstr ""
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11049,8 +11130,8 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "Você atualmente não tem acesso a nenhuma equipe dentro desta organização. Por favor, entre em contato com sua organização para solicitar acesso."
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
-msgstr "Você não tem permissão para criar um token para esta equipe"
+msgid "You do not have permission to create a token for this team."
+msgstr ""
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgid "You don't manage billing for any organisations."
@@ -11119,8 +11200,8 @@ msgstr "Você ainda não criou ou recebeu nenhum documento. Para criar um docume
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You have reached the limit of the number of files per envelope"
-msgstr "Você atingiu o limite do número de arquivos por envelope"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr ""
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11275,6 +11356,10 @@ msgstr "Agora será necessário inserir um código do seu aplicativo autenticado
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "Você receberá uma cópia por e-mail do documento assinado assim que todos assinarem."
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr ""
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
@@ -11333,6 +11418,10 @@ msgstr "Seu plano atual está vencido."
msgid "Your direct signing templates"
msgstr "Seus modelos de assinatura direta"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr ""
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11368,7 +11457,7 @@ msgstr "Seu documento foi duplicado com sucesso."
msgid "Your document has been uploaded successfully."
msgstr "Seu documento foi enviado com sucesso."
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Seu documento foi enviado com sucesso. Você será redirecionado para a página do modelo."
@@ -11559,4 +11648,4 @@ msgstr "Seu código de verificação:"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "your-domain.com another-domain.com"
-msgstr "seu-dominio.com outro-dominio.com"
\ No newline at end of file
+msgstr "seu-dominio.com outro-dominio.com"
diff --git a/packages/lib/translations/zh/web.po b/packages/lib/translations/zh/web.po
index 906471d7f..d85b0b97d 100644
--- a/packages/lib/translations/zh/web.po
+++ b/packages/lib/translations/zh/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2025-11-27 05:32\n"
+"PO-Revision-Date: 2025-12-15 02:39\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -68,7 +68,7 @@ msgstr "{0, plural, other {(# 个字符超出)}}"
#. placeholder {2}: table.getFilteredSelectedRowModel().rows.length
#: packages/ui/primitives/data-table-pagination.tsx
msgid "{0, plural, one {{1} of # row selected.} other {{2} of # rows selected.}}"
-msgstr ""
+msgstr "{0, plural, other {{2} / 共 # 行已选择。}}"
#. placeholder {0}: Math.abs(remaningLength)
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
@@ -101,6 +101,11 @@ msgstr "{0, plural, other {# 个字段}}"
msgid "{0, plural, one {# folder} other {# folders}}"
msgstr "{0, plural, other {# 个文件夹}}"
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}"
+msgstr "{0, plural, other {已通过 AI 检测添加了 # 位收件人。}}"
+
#. placeholder {0}: template.recipients.length
#: apps/remix/app/routes/_recipient+/d.$token+/_index.tsx
msgid "{0, plural, one {# recipient} other {# recipients}}"
@@ -151,11 +156,44 @@ msgstr "{0, plural, other {# 个匹配字段}}"
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, other {# 位收件人}}"
+#. placeholder {0}: progress.fieldsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # field found} other {Page {3} of {4} - # fields found}}"
+msgstr "{0, plural, other {第 {1} 页,共 {2} 页 - 找到 # 个字段}}"
+
+#. placeholder {0}: progress.recipientsDetected
+#. placeholder {1}: progress.pagesProcessed
+#. placeholder {2}: progress.totalPages
+#. placeholder {3}: progress.pagesProcessed
+#. placeholder {4}: progress.totalPages
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {Page {1} of {2} - # recipient found} other {Page {3} of {4} - # recipients found}}"
+msgstr "{0, plural, other {第 {1} 页,共 {2} 页 - 找到 # 位收件人}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "{0, plural, one {Recipient added} other {Recipients added}}"
+msgstr "{0, plural, other {已添加收件人}}"
+
#. placeholder {0}: pendingRecipients.length
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, other {正在等待 # 位收件人}}"
+#. placeholder {0}: detectedFields.length
+#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
+msgid "{0, plural, one {We found # field in your document.} other {We found # fields in your document.}}"
+msgstr "{0, plural, other {我们在您的文档中找到了 # 个字段。}}"
+
+#. placeholder {0}: detectedRecipients.length
+#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
+msgid "{0, plural, one {We found # recipient in your document.} other {We found # recipients in your document.}}"
+msgstr "{0, plural, other {我们在您的文档中找到了 # 位收件人。}}"
+
#. placeholder {0}: _(FRIENDLY_FIELD_TYPE[fieldType as FieldType])
#. placeholder {0}: route.label
#: apps/remix/app/components/general/document-signing/document-signing-auto-sign.tsx
@@ -200,11 +238,6 @@ msgstr "本月还剩 {0}/{1} 份文档可用。"
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
msgstr "{0} 代表“{1}”邀请您 {recipientActionVerb} 文档“{2}”。"
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "{0} recipient(s) have been added from AI detection."
-msgstr ""
-
#. placeholder {0}: organisation.name
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "{0} Teams"
@@ -279,7 +312,7 @@ msgstr "{MAXIMUM_PASSKEYS, plural, other {您不能拥有超过 # 个通行密
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}"
-msgstr ""
+msgstr "{maximumEnvelopeItemCount, plural, other {每个信封最多只能上传 # 个项目。}}"
#: packages/lib/utils/document-audit-logs.ts
msgid "{prefix} added a field"
@@ -514,39 +547,39 @@ msgstr "<0>{organisationName}0> 请求将您当前的 Documenso 账户关联
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 邀请你审批此文档"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 邀请你协助处理此文档"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 邀请你签署此文档"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 邀请你查看此文档"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to approve this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 代表 \"{0}\" 邀请你审批此文档"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to assist this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 代表 \"{0}\" 邀请你协助处理此文档"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to sign this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 代表 \"{0}\" 邀请你签署此文档"
#. placeholder {0}: document.team?.name
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
msgid "<0>{senderName} {senderEmail}0> on behalf of \"{0}\" has invited you to view this document"
-msgstr ""
+msgstr "<0>{senderName} {senderEmail}0> 代表 \"{0}\" 邀请你查看此文档"
#: packages/email/templates/confirm-team-email.tsx
msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
@@ -558,7 +591,7 @@ msgstr "<0>账户管理:0> 修改您的账户设置、权限和偏好"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Admins only0> - Only admins can access and view the document"
-msgstr ""
+msgstr "<0>仅限管理员0> - 只有管理员可以访问并查看此文档"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Data access:0> Access all data associated with your account"
@@ -579,7 +612,7 @@ msgstr "<0>事件:0>全部"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Everyone0> - Everyone can access and view the document"
-msgstr ""
+msgstr "<0>所有人0> - 所有人都可以访问并查看此文档"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "<0>Full account access:0> View all your profile information, settings, and activity"
@@ -591,7 +624,7 @@ msgstr "<0>继承认证方式0> - 使用在“常规设置”步骤中配置
#: packages/ui/components/document/document-visibility-select.tsx
msgid "<0>Managers and above0> - Only managers and above can access and view the document"
-msgstr ""
+msgstr "<0>经理及以上0> - 只有经理及以上可以访问和查看该文档"
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "<0>No restrictions0> - No authentication required"
@@ -851,9 +884,6 @@ msgid "A request to use your email has been initiated by {0} on Documenso"
msgstr "{0} 在 Documenso 上发起了一个使用您邮箱的请求"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
-msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
-msgstr "一个密钥将被发送到你的 URL,以便你验证该请求确实由 Documenso 发出"
-
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "一个密钥将被发送到你的 URL,以便你验证该请求确实由 Documenso 发出。"
@@ -951,11 +981,11 @@ msgstr "账户已被启用"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account link declined"
-msgstr ""
+msgstr "账户关联已被拒绝"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account linked successfully"
-msgstr ""
+msgstr "账户已成功关联"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Account Linking Request"
@@ -1017,7 +1047,7 @@ msgstr "启用"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Active"
-msgstr ""
+msgstr "启用"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -1114,7 +1144,7 @@ msgstr "添加邮箱域名"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Add fields"
-msgstr ""
+msgstr "添加字段"
#: apps/remix/app/components/general/document/document-edit-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
@@ -1182,7 +1212,7 @@ msgstr "添加占位符"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Add recipients"
-msgstr ""
+msgstr "添加收件人"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Add Recipients"
@@ -1286,7 +1316,11 @@ msgstr "提交后,将自动生成一个文档并添加到您的“文档”页
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "AI Features"
-msgstr ""
+msgstr "AI 功能"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "AI features are disabled for your team. Please ask your team owner or organisation owner to enable them."
+msgstr "您团队的 AI 功能已被禁用。请联系您团队的所有者或组织所有者为其启用。"
#: apps/remix/app/components/general/document/document-status.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -1384,7 +1418,7 @@ msgstr "允许使用生物识别、密码管理器、硬件密钥等方式进行
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Almost done"
-msgstr ""
+msgstr "即将完成"
#: apps/remix/app/components/forms/signup.tsx
msgid "Already have an account? <0>Sign in instead0>"
@@ -1478,7 +1512,7 @@ msgstr "自动签署文档时发生错误,部分字段可能未签署。请检
#: apps/remix/app/components/general/document-signing/document-signing-form.tsx
msgid "An error occurred while completing the document. Please try again."
-msgstr ""
+msgstr "完成文档时发生错误。请重试。"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "An error occurred while creating document from template."
@@ -1526,7 +1560,7 @@ msgstr "移动模板时发生错误。"
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "An error occurred while rejecting the document. Please try again."
-msgstr ""
+msgstr "拒绝文档时发生错误。请重试。"
#: apps/remix/app/components/general/document-signing/document-signing-checkbox-field.tsx
#: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx
@@ -1692,11 +1726,11 @@ msgstr "移动文件夹时发生未知错误。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Analyzing page layout"
-msgstr ""
+msgstr "正在分析页面布局"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Analyzing pages"
-msgstr ""
+msgstr "正在分析页面"
#: apps/remix/app/routes/_authenticated+/inbox.tsx
msgid "Any documents that you have been invited to will appear here"
@@ -2265,6 +2299,10 @@ msgstr "图表"
msgid "Checkbox"
msgstr "复选框"
+#: packages/ui/primitives/document-flow/field-content.tsx
+msgid "Checkbox option"
+msgstr "复选框选项"
+
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Checkbox Settings"
msgstr "复选框设置"
@@ -2368,6 +2406,7 @@ msgstr "客户端密钥"
msgid "Client secret is required"
msgstr "客户端密钥为必填项"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
@@ -2380,7 +2419,6 @@ msgstr "客户端密钥为必填项"
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
@@ -2391,7 +2429,9 @@ msgstr "客户端密钥为必填项"
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document/document-recipient-link-copy-dialog.tsx
+#: packages/ui/primitives/dialog.tsx
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
+#: packages/ui/primitives/sheet.tsx
msgid "Close"
msgstr "关闭"
@@ -2584,7 +2624,7 @@ msgstr "内容"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Context"
-msgstr ""
+msgstr "上下文"
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
@@ -2667,13 +2707,13 @@ msgstr "已复制"
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field"
-msgstr ""
+msgstr "已复制字段"
#: apps/remix/app/components/embed/authoring/configure-fields-view.tsx
#: packages/ui/primitives/document-flow/add-fields.tsx
#: packages/ui/primitives/template-flow/add-template-fields.tsx
msgid "Copied field to clipboard"
-msgstr ""
+msgstr "字段已复制到剪贴板"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
@@ -3020,7 +3060,7 @@ msgstr "日期设置"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "David is the Employee, Lucas is the Manager"
-msgstr ""
+msgstr "David 是员工,Lucas 是经理"
#: apps/remix/app/components/general/organisations/organisation-invitations.tsx
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
@@ -3069,6 +3109,10 @@ msgstr "默认时区"
msgid "Default Value"
msgstr "默认值"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Delegate Document Ownership"
+msgstr ""
+
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "delete"
msgstr "delete"
@@ -3234,48 +3278,48 @@ msgstr "详情"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect"
-msgstr ""
+msgstr "检测"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detect fields"
-msgstr ""
+msgstr "检测字段"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detect recipients"
-msgstr ""
+msgstr "检测收件人"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
msgid "Detect recipients with AI"
-msgstr ""
+msgstr "使用 AI 检测收件人"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Detect with AI"
-msgstr ""
+msgstr "使用 AI 检测"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detected fields"
-msgstr ""
+msgstr "已检测到的字段"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detected recipients"
-msgstr ""
+msgstr "已检测到的收件人"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting fields"
-msgstr ""
+msgstr "正在检测字段"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detecting recipients"
-msgstr ""
+msgstr "正在检测收件人"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Detecting signature areas"
-msgstr ""
+msgstr "正在检测签名区域"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Detection failed"
-msgstr ""
+msgstr "检测失败"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "Developer Mode"
@@ -3288,8 +3332,8 @@ msgid "Device"
msgstr "设备"
#: packages/email/templates/reset-password.tsx
-msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
-msgstr "没有请求密码更改?我们可以帮助您保护账户安全,只需<0>联系我们。0>"
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us0>."
+msgstr "如果你没有请求更改密码?我们可以帮助你保护账户安全,只需<0>联系我们0>。"
#: apps/remix/app/components/general/template/template-direct-link-badge.tsx
#: apps/remix/app/components/tables/templates-table.tsx
@@ -3632,6 +3676,11 @@ msgctxt "Audit log format"
msgid "Document opened"
msgstr "文档已打开"
+#: packages/lib/utils/document-audit-logs.ts
+msgctxt "Audit log format"
+msgid "Document ownership delegated"
+msgstr ""
+
#: apps/remix/app/components/general/document/document-status.tsx
msgid "Document pending"
msgstr "文档待处理"
@@ -3830,6 +3879,11 @@ msgstr "域名"
msgid "Don't have an account? <0>Sign up0>"
msgstr "还没有账号?<0>注册0>"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Don't transfer (Delete all documents)"
+msgstr "不要转移(删除所有文档)"
+
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
#: apps/remix/app/components/forms/2fa/view-recovery-codes-dialog.tsx
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
@@ -3968,6 +4022,7 @@ msgstr "例如:100"
#: apps/remix/app/components/general/document/document-page-view-button.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/teams/team-email-dropdown.tsx
+#: apps/remix/app/components/tables/admin-dashboard-users-table.tsx
#: apps/remix/app/components/tables/documents-table-action-button.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
@@ -4184,9 +4239,18 @@ msgstr "启用账户"
msgid "Enable Account"
msgstr "启用账户"
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
+msgid "Enable AI detection"
+msgstr "启用 AI 检测"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Enable AI features"
+msgstr "启用 AI 功能"
+
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Enable AI-powered features such as automatic recipient detection. When enabled, document content will be sent to AI providers. We only use providers that do not retain data for training and prefer European regions where available."
-msgstr ""
+msgstr "启用由 AI 驱动的功能,例如自动收件人检测。启用后,文档内容将被发送给 AI 提供商。我们只使用不会保留数据用于训练的提供商,并在可用时优先选择欧洲区域。"
#: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx
msgid "Enable Authenticator App"
@@ -4224,6 +4288,10 @@ msgstr "启用签署顺序"
msgid "Enable SSO portal"
msgstr "启用 SSO 门户"
+#: apps/remix/app/components/forms/document-preferences-form.tsx
+msgid "Enable team API tokens to delegate document ownership to another team member."
+msgstr ""
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
@@ -4422,11 +4490,11 @@ msgstr "错误"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error declining account link"
-msgstr ""
+msgstr "拒绝账户关联时出错"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Error linking account"
-msgstr ""
+msgstr "关联账户时出错"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "Error uploading file"
@@ -4484,7 +4552,7 @@ msgstr "外部 ID"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Extracting contact details"
-msgstr ""
+msgstr "正在提取联系方式"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
@@ -4493,7 +4561,7 @@ msgstr "失败"
#: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx
msgid "Failed to complete the document. Please try again."
-msgstr ""
+msgstr "未能完成文档。请重试。"
#: apps/remix/app/components/dialogs/folder-create-dialog.tsx
msgid "Failed to create folder"
@@ -4565,7 +4633,7 @@ msgstr "更新 Webhook 失败"
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
msgid "Failed to upload CSV. Please check the file format and try again."
-msgstr ""
+msgstr "CSV 上传失败。请检查文件格式后重试。"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Failed: {failedCount}"
@@ -4725,13 +4793,13 @@ msgstr "忘记密码?"
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
msgctxt "Plan price"
msgid "Free"
-msgstr ""
+msgstr "免费"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Free"
-msgstr ""
+msgstr "免费"
#: packages/lib/utils/fields.ts
#: packages/ui/primitives/document-flow/types.ts
@@ -4822,10 +4890,26 @@ msgstr "回到首页"
msgid "Go to document"
msgstr "前往文档"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to first page"
+msgstr "转到第一页"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to last page"
+msgstr "转到最后一页"
+
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to next page"
+msgstr "转到下一页"
+
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Go to owner"
msgstr "前往所有者"
+#: packages/ui/primitives/data-table-pagination.tsx
+msgid "Go to previous page"
+msgstr "转到上一页"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
msgid "Go to team"
msgstr "前往团队"
@@ -4883,7 +4967,7 @@ msgstr "帮助其他签署人完成文档。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Help the AI assign fields to the right recipients."
-msgstr ""
+msgstr "帮助 AI 将字段分配给正确的收件人。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains._index.tsx
msgid "Here you can add email domains to your organisation."
@@ -4906,8 +4990,8 @@ msgid "Here you can set branding preferences for your organisation. Teams will i
msgstr "您可以在此为组织设置品牌偏好。团队将默认继承这些设置。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set branding preferences for your team"
-msgstr "您可以在此为团队设置品牌偏好"
+msgid "Here you can set branding preferences for your team."
+msgstr "在这里,你可以为你的团队设置品牌偏好。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
msgid "Here you can set document preferences for your organisation. Teams will inherit these settings by default."
@@ -4922,12 +5006,12 @@ msgid "Here you can set preferences and defaults for your team."
msgstr "你可以在此设置团队的偏好和默认值。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx
-msgid "Here you can set your general branding preferences"
-msgstr "您可以在此设置通用品牌偏好"
+msgid "Here you can set your general branding preferences."
+msgstr "在这里,你可以设置通用品牌偏好。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
-msgid "Here you can set your general document preferences"
-msgstr "您可以在此设置通用文档偏好"
+msgid "Here you can set your general document preferences."
+msgstr "在这里,你可以设置通用文档偏好。"
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "Here's how it works:"
@@ -5020,11 +5104,11 @@ msgstr "ID 已复制到剪贴板"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Identifying input fields"
-msgstr ""
+msgstr "正在识别输入字段"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Identifying recipients"
-msgstr ""
+msgstr "正在识别收件人"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
msgid "If there is any issue with your subscription, please contact us at <0>{SUPPORT_EMAIL}0>."
@@ -5053,7 +5137,7 @@ msgstr "重要:这意味着什么"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Inactive"
-msgstr ""
+msgstr "未启用"
#: apps/remix/app/components/general/app-nav-mobile.tsx
#: apps/remix/app/components/general/app-nav-mobile.tsx
@@ -5092,6 +5176,7 @@ msgstr "继承认证方式"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
#: apps/remix/app/components/forms/email-preferences-form.tsx
msgid "Inherit from organisation"
@@ -5477,13 +5562,14 @@ msgstr "日志"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Looking for form fields"
-msgstr ""
+msgstr "正在查找表单字段"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Looking for signature fields"
-msgstr ""
+msgstr "正在查找签名字段"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
+#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/components/tables/organisation-teams-table.tsx
#: apps/remix/app/components/tables/user-organisations-table.tsx
msgid "Manage"
@@ -5544,6 +5630,10 @@ msgstr "管理关联账户"
msgid "Manage organisation"
msgstr "管理组织"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Manage Organisation"
+msgstr ""
+
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
msgid "Manage organisations"
msgstr "管理组织"
@@ -5636,7 +5726,7 @@ msgstr "管理者及以上"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Mapping fields to recipients"
-msgstr ""
+msgstr "正在将字段映射到收件人"
#: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx
msgid "Mark as viewed"
@@ -5707,15 +5797,15 @@ msgstr "加入时间"
msgid "Members"
msgstr "成员"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
-#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message"
msgstr "消息"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
+#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
+#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Message <0>(Optional)0>"
msgstr "消息 <0>(可选)0>"
@@ -5865,10 +5955,6 @@ msgstr "永不过期"
msgid "New Password"
msgstr "新密码"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "New Template"
-msgstr "新模板"
-
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
@@ -5894,6 +5980,7 @@ msgstr "下一位收件人姓名"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "No"
msgstr "否"
@@ -5909,11 +5996,11 @@ msgstr "未找到文档"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No email detected"
-msgstr ""
+msgstr "未检测到电子邮件"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "No fields were detected in your document."
-msgstr ""
+msgstr "在您的文档中未检测到任何字段。"
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
@@ -5961,7 +6048,7 @@ msgstr "无收件人"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "No recipients were detected in your document."
-msgstr ""
+msgstr "在您的文档中未检测到任何收件人。"
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
#: packages/ui/primitives/recipient-selector.tsx
@@ -6101,8 +6188,8 @@ msgid "Once you have scanned the QR code or entered the code manually, enter the
msgstr "扫描二维码或手动输入代码后,请在下方输入你的验证器应用提供的验证码。"
#: apps/remix/app/components/dialogs/organisation-email-domain-records-dialog.tsx
-msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button"
-msgstr "更新 DNS 记录后,可能需要长达 48 小时才能完成传播。DNS 传播完成后,您需要返回并点击“同步”域名按钮。"
+msgid "Once you update your DNS records, it may take up to 48 hours for it to be propogated. Once the DNS propagation is complete you will need to come back and press the \"Sync\" domains button."
+msgstr "更新 DNS 记录后,最多可能需要 48 小时才能完成传播。DNS 传播完成后,你需要返回此处并点击“同步”域按钮。"
#: packages/lib/constants/template.ts
msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
@@ -6136,6 +6223,10 @@ msgstr "只允许上传 PDF 文件"
msgid "Oops! Something went wrong."
msgstr "噢!出错了。"
+#: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx
+msgid "Open menu"
+msgstr "打开菜单"
+
#: apps/remix/app/components/general/stack-avatars-with-tooltip.tsx
msgid "Opened"
msgstr "已打开"
@@ -6329,20 +6420,6 @@ msgstr "所有权已转移给 {organisationMemberName}。"
msgid "Page {0} of {1}"
msgstr "第 {0} 页,共 {1} 页"
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.fieldsDetected
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} field(s) found"
-msgstr ""
-
-#. placeholder {0}: progress.pagesProcessed
-#. placeholder {1}: progress.totalPages
-#. placeholder {2}: progress.recipientsDetected
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "Page {0} of {1} - {2} recipient(s) found"
-msgstr ""
-
#. placeholder {0}: i + 1
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6352,7 +6429,7 @@ msgstr "第 {0} 页,共 {numPages} 页"
#: apps/remix/app/components/tables/admin-organisations-table.tsx
msgctxt "Subscription status"
msgid "Paid"
-msgstr ""
+msgstr "已付费"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
@@ -6434,7 +6511,7 @@ msgstr "密码已更新!"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgctxt "Subscription status"
msgid "Past Due"
-msgstr ""
+msgstr "逾期"
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
#: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx
@@ -6688,10 +6765,6 @@ msgstr "请尝试使用其他域名。"
msgid "Please try again and make sure you enter the correct email address."
msgstr "请重试,并确保你输入了正确的邮箱地址。"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Please try again later."
-msgstr "请稍后再试。"
-
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/primitives/pdf-viewer/base.tsx
@@ -6873,7 +6946,7 @@ msgstr "阅读完整的<0>签名披露0>。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Reading your document"
-msgstr ""
+msgstr "正在读取您的文档"
#: apps/remix/app/components/general/document/document-page-view-recipients.tsx
msgid "Ready"
@@ -6936,7 +7009,7 @@ msgstr "收件人"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-recipient-selector.tsx
msgid "Recipient {0}"
-msgstr ""
+msgstr "收件人 {0}"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/components/recipient/recipient-action-auth-select.tsx
@@ -6969,10 +7042,6 @@ msgstr "收件人已更新"
msgid "Recipients"
msgstr "收件人"
-#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
-msgid "Recipients added"
-msgstr ""
-
#: apps/remix/app/routes/_authenticated+/admin+/stats.tsx
msgid "Recipients metrics"
msgstr "收件人仍将保留其文档副本"
@@ -7122,7 +7191,7 @@ msgstr "移除组织成员"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
-msgstr ""
+msgstr "移除收件人"
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
msgid "Remove team email"
@@ -7146,8 +7215,8 @@ msgstr "回复邮箱"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
-msgid "Reply To Email"
-msgstr "回复邮箱"
+msgid "Reply To Email <0>(Optional)0>"
+msgstr "回复电子邮件 <0>(可选)0>"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Request"
@@ -7284,6 +7353,11 @@ msgstr "重试"
msgid "Return"
msgstr "返回"
+#: apps/remix/app/routes/_recipient+/sign.$token+/rejected.tsx
+#: apps/remix/app/routes/_recipient+/sign.$token+/waiting.tsx
+msgid "Return Home"
+msgstr ""
+
#: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx
msgid "Return to Documenso sign in page here"
msgstr "在此返回 Documenso 登录页面"
@@ -7450,6 +7524,7 @@ msgid "See the background jobs tab for the status"
msgstr "状态请查看后台作业选项卡"
#: apps/remix/app/components/general/document-signing/document-signing-dropdown-field.tsx
+#: packages/ui/primitives/document-flow/field-content.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx
#: packages/ui/primitives/document-flow/types.ts
msgid "Select"
@@ -8071,7 +8146,7 @@ msgstr "站点设置"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Skip"
-msgstr ""
+msgstr "跳过"
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -8089,7 +8164,6 @@ msgstr "部分签署人尚未被分配签名字段。请在继续前为每位签
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
#: apps/remix/app/components/dialogs/team-inherit-member-enable-dialog.tsx
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -8134,11 +8208,11 @@ msgstr "尝试验证你在 <0>{0}0> 的邮箱地址时出错。请稍后再试
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "Something went wrong while detecting fields."
-msgstr ""
+msgstr "检测字段时出现问题。"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Something went wrong while detecting recipients."
-msgstr ""
+msgstr "检测收件人时出现问题。"
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
#: packages/ui/components/pdf-viewer/pdf-viewer-konva.tsx
@@ -8252,14 +8326,14 @@ msgstr "Stripe 客户创建成功"
msgid "Stripe Customer ID"
msgstr "Stripe 客户 ID"
-#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/forms/support-ticket-form.tsx
-#: packages/ui/primitives/document-flow/add-subject.tsx
msgid "Subject"
msgstr "主题"
+#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
#: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
+#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/template-flow/add-template-settings.tsx
msgid "Subject <0>(Optional)0>"
msgstr "主题 <0>(可选)0>"
@@ -8580,7 +8654,6 @@ msgstr "当前已将此组织组分配给以下团队"
msgid "Template"
msgstr "模板"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
#: packages/ui/primitives/document-upload-button.tsx
msgid "Template (Legacy)"
msgstr "模板(旧版)"
@@ -8593,7 +8666,7 @@ msgstr "模板已创建"
msgid "Template deleted"
msgstr "模板已删除"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Template document uploaded"
msgstr "模板文档已上传"
@@ -8655,10 +8728,6 @@ msgstr "模板已上传"
msgid "Templates"
msgstr "模板"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
-msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "模板可帮助你快速生成包含预填收件人和字段的文档。"
-
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
msgid "Test"
msgstr "测试"
@@ -8765,7 +8834,7 @@ msgstr "此邮箱地址的显示名称"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
-msgstr ""
+msgstr "文档已成功删除。"
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
msgid "The document has been moved successfully."
@@ -8773,7 +8842,7 @@ msgstr "文档已成功移动。"
#: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx
msgid "The document has been successfully rejected."
-msgstr ""
+msgstr "文档已成功被拒绝。"
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
msgid "The document is already saved and cannot be changed."
@@ -8792,6 +8861,12 @@ msgstr "文档所有者已收到此次拒签的通知。当前您无需再进行
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
msgstr "文档所有者已收到您的决定通知。如有需要,他们可能会联系您并提供进一步说明。"
+#. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail
+#. placeholder {1}: data.teamName
+#: packages/lib/utils/document-audit-logs.ts
+msgid "The document ownership was delegated to {0} on behalf of {1}"
+msgstr ""
+
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document was created but could not be sent to recipients."
msgstr "文档已创建,但无法发送给收件人。"
@@ -8826,8 +8901,8 @@ msgid "The email domain you are looking for may have been removed, renamed or ma
msgstr "您要查找的邮箱域名可能已被删除、重命名,或从未存在。"
#: apps/remix/app/components/forms/signin.tsx
-msgid "The email or password provided is incorrect"
-msgstr "邮箱或密码不正确"
+msgid "The email or password provided is incorrect."
+msgstr "提供的邮箱或密码不正确。"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
@@ -8860,7 +8935,7 @@ msgstr "发生以下错误:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following recipients require an email address:"
-msgstr ""
+msgstr "以下收件人需要电子邮件地址:"
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
msgid "The following signers are missing signature fields:"
@@ -9025,8 +9100,8 @@ msgid "The token you have used to reset your password is either expired or it ne
msgstr "你用于重置密码的令牌已过期或不存在。如果你仍然忘记密码,请重新请求一个重置链接。"
#: apps/remix/app/components/forms/signin.tsx
-msgid "The two-factor authentication code provided is incorrect"
-msgstr "提供的双重身份验证代码不正确"
+msgid "The two-factor authentication code provided is incorrect."
+msgstr "提供的双重身份验证代码不正确。"
#: apps/remix/app/components/forms/editor/editor-field-signature-form.tsx
msgid "The typed signature font size"
@@ -9051,7 +9126,7 @@ msgstr "该用户的双重身份验证已成功重置。"
#: packages/ui/components/document/document-visibility-select.tsx
msgid "The visibility of the document to the recipient."
-msgstr ""
+msgstr "文档对收件人的可见性。"
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
@@ -9122,7 +9197,7 @@ msgstr "此操作可撤销,但请务必小心,因为账户可能会受到永
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "This can take a minute or two depending on the size of your document."
-msgstr ""
+msgstr "根据文档大小,这可能需要一到两分钟。"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
msgid "This claim is locked and cannot be deleted."
@@ -9196,8 +9271,8 @@ msgid "This document was created using a direct link."
msgstr "此文档是通过直接链接创建的。"
#: packages/email/template-components/template-footer.tsx
-msgid "This document was sent using <0>Documenso.0>"
-msgstr "此邮件通过 <0>Documenso0> 发送。"
+msgid "This document was sent using <0>Documenso0>."
+msgstr "此文档是使用 <0>Documenso0> 发送的。"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document will be duplicated."
@@ -9502,7 +9577,7 @@ msgstr "令牌名称"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Too many requests"
-msgstr ""
+msgstr "请求过多"
#: apps/remix/app/components/forms/editor/editor-field-generic-field-forms.tsx
msgid "Top"
@@ -9528,6 +9603,10 @@ msgstr "注册为 Documenso 用户的签署人总数"
msgid "Total Users"
msgstr "用户总数"
+#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
+msgid "Transfer documents to a different team"
+msgstr "将文档转移到其他团队"
+
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "Triggers"
@@ -9538,7 +9617,11 @@ msgstr "触发条件"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Try again"
-msgstr ""
+msgstr "重试"
+
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Turn on AI detection to automatically find recipients and fields in your documents. AI providers do not retain your data for training."
+msgstr "开启 AI 检测,可在文档中自动查找收件人和字段。AI 服务提供商不会保留您的数据用于训练。"
#: apps/remix/app/routes/_authenticated+/settings+/security._index.tsx
msgid "Two factor authentication"
@@ -9686,6 +9769,10 @@ msgstr "未授权"
msgid "Uncompleted"
msgstr "未完成"
+#: packages/ui/primitives/signature-pad/signature-pad-draw.tsx
+msgid "Undo"
+msgstr "撤销"
+
#: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
#: apps/remix/app/routes/_authenticated+/settings+/security.sessions.tsx
@@ -9704,7 +9791,7 @@ msgstr "未知错误"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Unknown name"
-msgstr ""
+msgstr "未知姓名"
#: apps/remix/app/components/tables/admin-claims-table.tsx
msgid "Unlimited"
@@ -10298,8 +10385,8 @@ msgstr "正在等待你的顺序"
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx
-msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
-msgstr "想发送这样精美的签署链接吗?<0>了解 Documenso。0>"
+msgid "Want to send slick signing links like this one? <0>Check out Documenso0>."
+msgstr "想要发送像这样顺畅好用的签署链接吗?<0>来了解一下 Documenso0>。"
#: apps/remix/app/routes/_profile+/_layout.tsx
msgid "Want your own public profile?"
@@ -10334,6 +10421,10 @@ msgstr "目前无法更新此通行密钥。请稍后再试。"
msgid "We couldn't create a Stripe customer. Please try again."
msgstr "我们无法创建 Stripe 客户。请重试。"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "We couldn't enable AI features right now. Please try again."
+msgstr "我们现在无法启用 AI 功能。请重试。"
+
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "我们无法更新该组。请重试。"
@@ -10417,7 +10508,7 @@ msgstr "尝试删除你的账号时出现未知错误。请稍后再试。"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "We encountered an unknown error while attempting to delete your document. Please try again later."
-msgstr ""
+msgstr "尝试删除您的文档时遇到未知错误。请稍后重试。"
#: apps/remix/app/components/dialogs/team-inherit-member-disable-dialog.tsx
msgid "We encountered an unknown error while attempting to disable access."
@@ -10534,16 +10625,6 @@ msgstr "尝试更新团队邮箱时出现未知错误。请稍后再试。"
msgid "We encountered an unknown error while attempting update your profile. Please try again later."
msgstr "在尝试更新您的个人资料时遇到未知错误。请稍后重试。"
-#. placeholder {0}: detectedFields.length
-#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
-msgid "We found {0} field(s) in your document."
-msgstr ""
-
-#. placeholder {0}: detectedRecipients.length
-#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
-msgid "We found {0} recipient(s) in your document."
-msgstr ""
-
#: apps/remix/app/components/dialogs/team-email-add-dialog.tsx
msgid "We have sent a confirmation email for verification."
msgstr "我们已发送确认邮件用于验证。"
@@ -10637,11 +10718,11 @@ msgstr "我们会尽快通过电子邮件回复您。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "We'll scan your document to find form fields like signature lines, text inputs, checkboxes, and more. Detected fields will be suggested for you to review."
-msgstr ""
+msgstr "我们将扫描您的文档,以查找签名行、文本输入、复选框等表单字段。检测到的字段将作为建议供您审核。"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "We'll scan your document to find signature fields and identify who needs to sign. Detected recipients will be suggested for you to review."
-msgstr ""
+msgstr "我们将扫描您的文档,以查找签名字段并识别谁需要签名。检测到的收件人将作为建议供您审核。"
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
msgid "We'll send a 6-digit code to your email"
@@ -10793,6 +10874,7 @@ msgstr "按年"
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
#: apps/remix/app/components/forms/document-preferences-form.tsx
+#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Yes"
msgstr "是"
@@ -10905,13 +10987,13 @@ msgid "You are currently updating <0>{0}0>"
msgstr "您当前正在更新 <0>{0}0>"
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
-msgid "You are currently updating <0>{memberName}.0>"
-msgstr "您当前正在更新 <0>{memberName}0>。"
+msgid "You are currently updating <0>{memberName}0>."
+msgstr "你当前正在更新 <0>{memberName}0>。"
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx
-msgid "You are currently updating <0>{organisationMemberName}.0>"
-msgstr "您当前正在更新 <0>{organisationMemberName}0>。"
+msgid "You are currently updating <0>{organisationMemberName}0>."
+msgstr "你当前正在更新 <0>{organisationMemberName}0>。"
#: apps/remix/app/components/tables/settings-security-passkey-table-actions.tsx
msgid "You are currently updating the <0>{passkeyName}0> passkey."
@@ -10948,11 +11030,11 @@ msgstr "您无权为此用户重置双重身份验证。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
msgid "You can add fields manually in the editor."
-msgstr ""
+msgstr "您可以在编辑器中手动添加字段。"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You can add recipients manually in the editor."
-msgstr ""
+msgstr "您可以在编辑器中手动添加收件人。"
#: packages/email/template-components/template-confirmation-email.tsx
msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
@@ -10972,16 +11054,16 @@ msgstr "您可以启用访问,以默认允许所有组织成员访问此团队
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.email.tsx
-msgid "You can manage your email preferences here"
-msgstr "您可以在此管理邮件偏好设置"
+msgid "You can manage your email preferences here."
+msgstr "你可以在此管理你的电子邮件偏好。"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx
msgid "You can only detect fields in draft envelopes"
-msgstr ""
+msgstr "您只能在草稿信封中检测字段"
#: packages/email/templates/confirm-team-email.tsx
-msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
-msgstr "您可以随时在 Documenso 的团队设置中<0>撤销0>访问权限。"
+msgid "You can revoke access at any time in your team settings on Documenso <0>here0>."
+msgstr "你可以随时在 Documenso 的团队设置中撤销访问权限,入口在<0>这里0>。"
#: apps/remix/app/components/forms/public-profile-form.tsx
msgid "You can update the profile URL by updating the team URL in the general settings page."
@@ -11014,8 +11096,8 @@ msgid "You cannot delete a group which has a higher role than you."
msgstr "您不能删除角色高于您的组。"
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
-msgid "You cannot delete this item because the document has been sent to recipients"
-msgstr "您无法删除此条目,因为文档已发送给收件人"
+msgid "You cannot delete this item because the document has been sent to recipients."
+msgstr "你无法删除此项目,因为该文档已发送给收件人。"
#: apps/remix/app/components/dialogs/team-group-update-dialog.tsx
msgid "You cannot modify a group which has a higher role than you."
@@ -11041,8 +11123,8 @@ msgstr "您目前无法上传文档。"
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You cannot upload encrypted PDFs"
-msgstr "你不能上传加密的 PDF"
+msgid "You cannot upload encrypted PDFs."
+msgstr "你无法上传已加密的 PDF。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx
msgid "You currently have an inactive <0>{currentProductName}0> subscription"
@@ -11053,8 +11135,8 @@ msgid "You currently have no access to any teams within this organisation. Pleas
msgstr "您当前对该组织内的任何团队都没有访问权限。请联系您的组织以申请访问。"
#: apps/remix/app/components/forms/token.tsx
-msgid "You do not have permission to create a token for this team"
-msgstr "您没有权限为此团队创建令牌"
+msgid "You do not have permission to create a token for this team."
+msgstr "您没有权限为此团队创建令牌。"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
msgid "You don't manage billing for any organisations."
@@ -11123,8 +11205,8 @@ msgstr "你还没有创建或接收任何文档。要创建文档,请先上传
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
-msgid "You have reached the limit of the number of files per envelope"
-msgstr "您已达到每个信封可上传文件数量的上限"
+msgid "You have reached the limit of the number of files per envelope."
+msgstr "您已达到每个信封允许上传的文件数量上限。"
#. placeholder {0}: quota.directTemplates
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -11279,10 +11361,14 @@ msgstr "今后登录时,你需要输入验证器应用中的验证码。"
msgid "You will receive an email copy of the signed document once everyone has signed."
msgstr "当所有人签署完成后,您将收到一份已签署文档的电子邮件副本。"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "You're an admin. You can enable AI features for this team right away. Everyone on the team will see AI detection once enabled."
+msgstr "您是管理员,您可以立即为此团队启用 AI 功能。启用后,团队中的所有成员都能看到 AI 检测。"
+
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "You've made too many detection requests. Please wait a minute before trying again."
-msgstr ""
+msgstr "您发起了太多检测请求。请等待一分钟后再试。"
#: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx
msgid "Your Account"
@@ -11337,6 +11423,10 @@ msgstr "您当前的套餐已逾期。"
msgid "Your direct signing templates"
msgstr "你的直接签署模板"
+#: apps/remix/app/components/dialogs/ai-features-enable-dialog.tsx
+msgid "Your document content will be sent securely to our AI provider solely for detection and will not be stored or used for training."
+msgstr "您的文档内容将被安全地发送给我们的 AI 服务提供商,仅用于检测,不会被存储或用于训练。"
+
#: apps/remix/app/components/embed/authoring/configure-document-upload.tsx
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document failed to upload."
@@ -11372,14 +11462,14 @@ msgstr "你的文档已成功复制。"
msgid "Your document has been uploaded successfully."
msgstr "你的文档已成功上传。"
-#: apps/remix/app/components/dialogs/template-create-dialog.tsx
+#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "你的文档已成功上传。你将被重定向到模板页面。"
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Your document is processed securely using AI services that don't retain your data."
-msgstr ""
+msgstr "您的文档将通过不保留您数据的 AI 服务进行安全处理。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.document.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.document.tsx
diff --git a/packages/lib/types/document-audit-logs.ts b/packages/lib/types/document-audit-logs.ts
index 05be5fc35..08f671633 100644
--- a/packages/lib/types/document-audit-logs.ts
+++ b/packages/lib/types/document-audit-logs.ts
@@ -44,6 +44,7 @@ export const ZDocumentAuditLogTypeSchema = z.enum([
'DOCUMENT_TITLE_UPDATED', // When the document title is updated.
'DOCUMENT_EXTERNAL_ID_UPDATED', // When the document external ID is updated.
'DOCUMENT_MOVED_TO_TEAM', // When the document is moved to a team.
+ 'DOCUMENT_DELEGATED_OWNER_CREATED', // When the document delegated owner is created.
// ACCESS AUTH 2FA events.
'DOCUMENT_ACCESS_AUTH_2FA_REQUESTED', // When ACCESS AUTH 2FA is requested.
@@ -681,6 +682,18 @@ export const ZDocumentAuditLogEventDocumentMovedToTeamSchema = z.object({
}),
});
+/**
+ * Event: Document delegated owner created.
+ */
+export const ZDocumentAuditLogEventDocumentDelegatedOwnerCreatedSchema = z.object({
+ type: z.literal(DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_DELEGATED_OWNER_CREATED),
+ data: z.object({
+ delegatedOwnerName: z.string().nullable(),
+ delegatedOwnerEmail: z.string(),
+ teamName: z.string(),
+ }),
+});
+
export const ZDocumentAuditLogBaseSchema = z.object({
id: z.string(),
createdAt: z.date(),
@@ -701,6 +714,7 @@ export const ZDocumentAuditLogSchema = ZDocumentAuditLogBaseSchema.and(
ZDocumentAuditLogEventDocumentCreatedSchema,
ZDocumentAuditLogEventDocumentDeletedSchema,
ZDocumentAuditLogEventDocumentMovedToTeamSchema,
+ ZDocumentAuditLogEventDocumentDelegatedOwnerCreatedSchema,
ZDocumentAuditLogEventDocumentFieldsAutoInsertedSchema,
ZDocumentAuditLogEventDocumentFieldInsertedSchema,
ZDocumentAuditLogEventDocumentFieldUninsertedSchema,
diff --git a/packages/lib/types/envelope.ts b/packages/lib/types/envelope.ts
index a0b4cea62..7c83afcdf 100644
--- a/packages/lib/types/envelope.ts
+++ b/packages/lib/types/envelope.ts
@@ -115,5 +115,40 @@ export type TEnvelopeLite = z.infer;
/**
* A version of the envelope response schema when returning multiple envelopes at once from a single API endpoint.
*/
-// export const ZEnvelopeManySchema = X
-// export type TEnvelopeMany = z.infer;
+export const ZEnvelopeManySchema = EnvelopeSchema.pick({
+ internalVersion: true,
+ type: true,
+ status: true,
+ source: true,
+ visibility: true,
+ templateType: true,
+ id: true,
+ secondaryId: true,
+ externalId: true,
+ createdAt: true,
+ updatedAt: true,
+ completedAt: true,
+ deletedAt: true,
+ title: true,
+ authOptions: true,
+ formValues: true,
+ publicTitle: true,
+ publicDescription: true,
+ userId: true,
+ teamId: true,
+ folderId: true,
+ templateId: true,
+}).extend({
+ user: z.object({
+ id: z.number(),
+ name: z.string(),
+ email: z.string(),
+ }),
+ recipients: ZEnvelopeRecipientLiteSchema.array(),
+ team: TeamSchema.pick({
+ id: true,
+ url: true,
+ }).nullable(),
+});
+
+export type TEnvelopeMany = z.infer;
diff --git a/packages/lib/types/subscription.ts b/packages/lib/types/subscription.ts
index c35dc10ca..eba408cd8 100644
--- a/packages/lib/types/subscription.ts
+++ b/packages/lib/types/subscription.ts
@@ -31,7 +31,7 @@ export const ZClaimFlagsSchema = z.object({
authenticationPortal: z.boolean().optional(),
- allowEnvelopes: z.boolean().optional(),
+ allowLegacyEnvelopes: z.boolean().optional(),
});
export type TClaimFlags = z.infer;
@@ -84,9 +84,9 @@ export const SUBSCRIPTION_CLAIM_FEATURE_FLAGS: Record<
key: 'authenticationPortal',
label: 'Authentication portal',
},
- allowEnvelopes: {
- key: 'allowEnvelopes',
- label: 'Allow envelopes',
+ allowLegacyEnvelopes: {
+ key: 'allowLegacyEnvelopes',
+ label: 'Allow Legacy Envelopes',
},
};
diff --git a/packages/lib/utils/document-audit-logs.ts b/packages/lib/utils/document-audit-logs.ts
index 767de4677..f2d4681a7 100644
--- a/packages/lib/utils/document-audit-logs.ts
+++ b/packages/lib/utils/document-audit-logs.ts
@@ -530,6 +530,13 @@ export const formatDocumentAuditLogAction = (
anonymous: msg`Envelope item deleted`,
identified: msg`${prefix} deleted an envelope item with title ${data.envelopeItemTitle}`,
}))
+ .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_DELEGATED_OWNER_CREATED }, ({ data }) => ({
+ anonymous: msg({
+ message: `Document ownership delegated`,
+ context: `Audit log format`,
+ }),
+ identified: msg`The document ownership was delegated to ${data.delegatedOwnerName || data.delegatedOwnerEmail} on behalf of ${data.teamName}`,
+ }))
.exhaustive();
return {
diff --git a/packages/lib/utils/envelope.ts b/packages/lib/utils/envelope.ts
index f686ae2c8..a0628106e 100644
--- a/packages/lib/utils/envelope.ts
+++ b/packages/lib/utils/envelope.ts
@@ -18,6 +18,8 @@ const ZDocumentIdSchema = z.string().regex(/^document_\d+$/);
const ZTemplateIdSchema = z.string().regex(/^template_\d+$/);
const ZEnvelopeIdSchema = z.string().regex(/^envelope_.{2,}$/);
+const MAX_ENVELOPE_IDS_PER_REQUEST = 20;
+
export type EnvelopeIdOptions =
| {
type: 'envelopeId';
@@ -32,6 +34,20 @@ export type EnvelopeIdOptions =
id: number;
};
+export type EnvelopeIdsOptions =
+ | {
+ type: 'envelopeId';
+ ids: string[];
+ }
+ | {
+ type: 'documentId';
+ ids: number[];
+ }
+ | {
+ type: 'templateId';
+ ids: number[];
+ };
+
/**
* Parses an unknown document or template ID.
*
@@ -89,6 +105,87 @@ export const unsafeBuildEnvelopeIdQuery = (
.exhaustive();
};
+/**
+ * Parses multiple document or template IDs and builds a query filter.
+ *
+ * This is UNSAFE because it does not validate access, it only validates ID format and builds the query.
+ *
+ * @throws AppError if any ID is invalid or if the array exceeds the maximum limit
+ */
+export const unsafeBuildEnvelopeIdsQuery = (
+ options: EnvelopeIdsOptions,
+ expectedEnvelopeType: EnvelopeType | null,
+) => {
+ if (!options.ids || options.ids.length === 0) {
+ throw new AppError(AppErrorCode.INVALID_BODY, {
+ message: 'At least one ID is required',
+ });
+ }
+
+ if (options.ids.length > MAX_ENVELOPE_IDS_PER_REQUEST) {
+ throw new AppError(AppErrorCode.INVALID_BODY, {
+ message: `Cannot request more than ${MAX_ENVELOPE_IDS_PER_REQUEST} envelopes at once`,
+ });
+ }
+
+ return match(options)
+ .with({ type: 'envelopeId' }, (value) => {
+ const validatedIds: string[] = [];
+
+ for (const id of value.ids) {
+ const parsed = ZEnvelopeIdSchema.safeParse(id);
+
+ if (!parsed.success) {
+ throw new AppError(AppErrorCode.INVALID_BODY, {
+ message: `Invalid envelope ID: ${id}`,
+ });
+ }
+
+ validatedIds.push(parsed.data);
+ }
+
+ if (expectedEnvelopeType) {
+ return {
+ id: { in: validatedIds },
+ type: expectedEnvelopeType,
+ };
+ }
+
+ return {
+ id: { in: validatedIds },
+ };
+ })
+ .with({ type: 'documentId' }, (value) => {
+ if (expectedEnvelopeType && expectedEnvelopeType !== EnvelopeType.DOCUMENT) {
+ throw new AppError(AppErrorCode.INVALID_BODY, {
+ message: 'Invalid document ID type',
+ });
+ }
+
+ const secondaryIds = value.ids.map((id) => mapDocumentIdToSecondaryId(id));
+
+ return {
+ type: EnvelopeType.DOCUMENT,
+ secondaryId: { in: secondaryIds },
+ };
+ })
+ .with({ type: 'templateId' }, (value) => {
+ if (expectedEnvelopeType && expectedEnvelopeType !== EnvelopeType.TEMPLATE) {
+ throw new AppError(AppErrorCode.INVALID_BODY, {
+ message: 'Invalid template ID type',
+ });
+ }
+
+ const secondaryIds = value.ids.map((id) => mapTemplateIdToSecondaryId(id));
+
+ return {
+ type: EnvelopeType.TEMPLATE,
+ secondaryId: { in: secondaryIds },
+ };
+ })
+ .exhaustive();
+};
+
/**
* Maps a legacy document ID number to an envelope secondary ID.
*
diff --git a/packages/lib/utils/organisations.ts b/packages/lib/utils/organisations.ts
index 27c2933bc..4d9113785 100644
--- a/packages/lib/utils/organisations.ts
+++ b/packages/lib/utils/organisations.ts
@@ -117,6 +117,7 @@ export const generateDefaultOrganisationSettings = (): Omit<
documentLanguage: 'en',
documentTimezone: null, // Null means local timezone.
documentDateFormat: DEFAULT_DOCUMENT_DATE_FORMAT,
+ delegateDocumentOwnership: false,
includeSenderDetails: true,
includeSigningCertificate: true,
diff --git a/packages/lib/utils/teams.ts b/packages/lib/utils/teams.ts
index b30d3bad6..c80226eaf 100644
--- a/packages/lib/utils/teams.ts
+++ b/packages/lib/utils/teams.ts
@@ -184,6 +184,7 @@ export const generateDefaultTeamSettings = (): Omit {
+ const { teamId, user } = ctx;
+ const { documentIds } = input;
+
+ ctx.logger.info({
+ input: {
+ documentIds,
+ },
+ });
+
+ const { envelopeWhereInput } = await getMultipleEnvelopeWhereInput({
+ ids: {
+ type: 'documentId',
+ ids: documentIds,
+ },
+ userId: user.id,
+ teamId,
+ type: EnvelopeType.DOCUMENT,
+ });
+
+ const envelopes = await prisma.envelope.findMany({
+ where: envelopeWhereInput,
+ include: {
+ user: {
+ select: {
+ id: true,
+ name: true,
+ email: true,
+ },
+ },
+ recipients: {
+ orderBy: {
+ id: 'asc',
+ },
+ },
+ team: {
+ select: {
+ id: true,
+ url: true,
+ },
+ },
+ },
+ });
+
+ return {
+ data: envelopes.map((envelope) => mapEnvelopesToDocumentMany(envelope)),
+ };
+ });
diff --git a/packages/trpc/server/document-router/get-documents-by-ids.types.ts b/packages/trpc/server/document-router/get-documents-by-ids.types.ts
new file mode 100644
index 000000000..6f51483fb
--- /dev/null
+++ b/packages/trpc/server/document-router/get-documents-by-ids.types.ts
@@ -0,0 +1,26 @@
+import { z } from 'zod';
+
+import { ZDocumentManySchema } from '@documenso/lib/types/document';
+
+import type { TrpcRouteMeta } from '../trpc';
+
+export const getDocumentsByIdsMeta: TrpcRouteMeta = {
+ openapi: {
+ method: 'POST',
+ path: '/document/get-many',
+ summary: 'Get multiple documents',
+ description: 'Retrieve multiple documents by their IDs',
+ tags: ['Document'],
+ },
+};
+
+export const ZGetDocumentsByIdsRequestSchema = z.object({
+ documentIds: z.array(z.number()).min(1),
+});
+
+export const ZGetDocumentsByIdsResponseSchema = z.object({
+ data: z.array(ZDocumentManySchema),
+});
+
+export type TGetDocumentsByIdsRequest = z.infer;
+export type TGetDocumentsByIdsResponse = z.infer;
diff --git a/packages/trpc/server/document-router/router.ts b/packages/trpc/server/document-router/router.ts
index 2784c2ae7..ba512caac 100644
--- a/packages/trpc/server/document-router/router.ts
+++ b/packages/trpc/server/document-router/router.ts
@@ -19,6 +19,7 @@ import { findDocumentsInternalRoute } from './find-documents-internal';
import { findInboxRoute } from './find-inbox';
import { getDocumentRoute } from './get-document';
import { getDocumentByTokenRoute } from './get-document-by-token';
+import { getDocumentsByIdsRoute } from './get-documents-by-ids';
import { getInboxCountRoute } from './get-inbox-count';
import { redistributeDocumentRoute } from './redistribute-document';
import { searchDocumentRoute } from './search-document';
@@ -27,6 +28,7 @@ import { updateDocumentRoute } from './update-document';
export const documentRouter = router({
get: getDocumentRoute,
+ getMany: getDocumentsByIdsRoute,
find: findDocumentsRoute,
create: createDocumentRoute,
update: updateDocumentRoute,
diff --git a/packages/trpc/server/envelope-router/create-envelope.ts b/packages/trpc/server/envelope-router/create-envelope.ts
index a8cc6a0d9..44f298880 100644
--- a/packages/trpc/server/envelope-router/create-envelope.ts
+++ b/packages/trpc/server/envelope-router/create-envelope.ts
@@ -33,6 +33,7 @@ export const createEnvelopeRoute = authenticatedProcedure
folderId,
meta,
attachments,
+ delegatedDocumentOwner,
} = payload;
ctx.logger.info({
@@ -144,6 +145,7 @@ export const createEnvelopeRoute = authenticatedProcedure
recipients: recipientsToCreate,
folderId,
envelopeItems,
+ delegatedDocumentOwner,
},
attachments,
meta,
diff --git a/packages/trpc/server/envelope-router/create-envelope.types.ts b/packages/trpc/server/envelope-router/create-envelope.types.ts
index 48b6bef55..7c9102224 100644
--- a/packages/trpc/server/envelope-router/create-envelope.types.ts
+++ b/packages/trpc/server/envelope-router/create-envelope.types.ts
@@ -41,6 +41,11 @@ export const createEnvelopeMeta: TrpcRouteMeta = {
export const ZCreateEnvelopePayloadSchema = z.object({
title: ZDocumentTitleSchema,
type: z.nativeEnum(EnvelopeType),
+ delegatedDocumentOwner: z
+ .string()
+ .email()
+ .describe('The email of the user who will own the document.')
+ .optional(),
externalId: ZDocumentExternalIdSchema.optional(),
visibility: ZDocumentVisibilitySchema.optional(),
globalAccessAuth: z.array(ZDocumentAccessAuthTypesSchema).optional(),
diff --git a/packages/trpc/server/envelope-router/find-envelopes.ts b/packages/trpc/server/envelope-router/find-envelopes.ts
new file mode 100644
index 000000000..a16cf46f9
--- /dev/null
+++ b/packages/trpc/server/envelope-router/find-envelopes.ts
@@ -0,0 +1,56 @@
+import { findEnvelopes } from '@documenso/lib/server-only/envelope/find-envelopes';
+
+import { authenticatedProcedure } from '../trpc';
+import {
+ ZFindEnvelopesRequestSchema,
+ ZFindEnvelopesResponseSchema,
+ findEnvelopesMeta,
+} from './find-envelopes.types';
+
+export const findEnvelopesRoute = authenticatedProcedure
+ .meta(findEnvelopesMeta)
+ .input(ZFindEnvelopesRequestSchema)
+ .output(ZFindEnvelopesResponseSchema)
+ .query(async ({ input, ctx }) => {
+ const { user, teamId } = ctx;
+
+ const {
+ query,
+ type,
+ templateId,
+ page,
+ perPage,
+ orderByDirection,
+ orderByColumn,
+ source,
+ status,
+ folderId,
+ } = input;
+
+ ctx.logger.info({
+ input: {
+ query,
+ type,
+ templateId,
+ source,
+ status,
+ folderId,
+ page,
+ perPage,
+ },
+ });
+
+ return await findEnvelopes({
+ userId: user.id,
+ teamId,
+ type,
+ templateId,
+ query,
+ source,
+ status,
+ page,
+ perPage,
+ folderId,
+ orderBy: orderByColumn ? { column: orderByColumn, direction: orderByDirection } : undefined,
+ });
+ });
diff --git a/packages/trpc/server/envelope-router/find-envelopes.types.ts b/packages/trpc/server/envelope-router/find-envelopes.types.ts
new file mode 100644
index 000000000..a75cea805
--- /dev/null
+++ b/packages/trpc/server/envelope-router/find-envelopes.types.ts
@@ -0,0 +1,46 @@
+import { DocumentSource, DocumentStatus, EnvelopeType } from '@prisma/client';
+import { z } from 'zod';
+
+import { ZEnvelopeManySchema } from '@documenso/lib/types/envelope';
+import { ZFindResultResponse, ZFindSearchParamsSchema } from '@documenso/lib/types/search-params';
+
+import type { TrpcRouteMeta } from '../trpc';
+
+export const findEnvelopesMeta: TrpcRouteMeta = {
+ openapi: {
+ method: 'GET',
+ path: '/envelope',
+ summary: 'Find envelopes',
+ description: 'Find envelopes based on search criteria',
+ tags: ['Envelope'],
+ },
+};
+
+export const ZFindEnvelopesRequestSchema = ZFindSearchParamsSchema.extend({
+ type: z
+ .nativeEnum(EnvelopeType)
+ .describe('Filter envelopes by type (DOCUMENT or TEMPLATE).')
+ .optional(),
+ templateId: z
+ .number()
+ .describe('Filter envelopes by the template ID used to create it.')
+ .optional(),
+ source: z
+ .nativeEnum(DocumentSource)
+ .describe('Filter envelopes by how it was created.')
+ .optional(),
+ status: z
+ .nativeEnum(DocumentStatus)
+ .describe('Filter envelopes by the current status.')
+ .optional(),
+ folderId: z.string().describe('Filter envelopes by folder ID.').optional(),
+ orderByColumn: z.enum(['createdAt']).optional(),
+ orderByDirection: z.enum(['asc', 'desc']).describe('Sort direction.').default('desc'),
+});
+
+export const ZFindEnvelopesResponseSchema = ZFindResultResponse.extend({
+ data: ZEnvelopeManySchema.array(),
+});
+
+export type TFindEnvelopesRequest = z.infer;
+export type TFindEnvelopesResponse = z.infer;
diff --git a/packages/trpc/server/envelope-router/get-envelopes-by-ids.ts b/packages/trpc/server/envelope-router/get-envelopes-by-ids.ts
new file mode 100644
index 000000000..a855afd5a
--- /dev/null
+++ b/packages/trpc/server/envelope-router/get-envelopes-by-ids.ts
@@ -0,0 +1,34 @@
+import { getEnvelopesByIds } from '@documenso/lib/server-only/envelope/get-envelopes-by-ids';
+
+import { authenticatedProcedure } from '../trpc';
+import {
+ ZGetEnvelopesByIdsRequestSchema,
+ ZGetEnvelopesByIdsResponseSchema,
+ getEnvelopesByIdsMeta,
+} from './get-envelopes-by-ids.types';
+
+export const getEnvelopesByIdsRoute = authenticatedProcedure
+ .meta(getEnvelopesByIdsMeta)
+ .input(ZGetEnvelopesByIdsRequestSchema)
+ .output(ZGetEnvelopesByIdsResponseSchema)
+ .mutation(async ({ input, ctx }) => {
+ const { teamId, user } = ctx;
+ const { ids } = input;
+
+ ctx.logger.info({
+ input: {
+ ids,
+ },
+ });
+
+ const envelopes = await getEnvelopesByIds({
+ ids,
+ userId: user.id,
+ teamId,
+ type: null,
+ });
+
+ return {
+ data: envelopes,
+ };
+ });
diff --git a/packages/trpc/server/envelope-router/get-envelopes-by-ids.types.ts b/packages/trpc/server/envelope-router/get-envelopes-by-ids.types.ts
new file mode 100644
index 000000000..89d938fe2
--- /dev/null
+++ b/packages/trpc/server/envelope-router/get-envelopes-by-ids.types.ts
@@ -0,0 +1,41 @@
+import { z } from 'zod';
+
+import { ZEnvelopeSchema } from '@documenso/lib/types/envelope';
+
+import type { TrpcRouteMeta } from '../trpc';
+
+export const getEnvelopesByIdsMeta: TrpcRouteMeta = {
+ openapi: {
+ method: 'POST',
+ path: '/envelope/get-many',
+ summary: 'Get multiple envelopes',
+ description: 'Retrieve multiple envelopes by their IDs',
+ tags: ['Envelope'],
+ },
+};
+
+export const ZEnvelopeIdsSchema = z.discriminatedUnion('type', [
+ z.object({
+ type: z.literal('envelopeId'),
+ ids: z.array(z.string()).min(1).max(20),
+ }),
+ z.object({
+ type: z.literal('documentId'),
+ ids: z.array(z.number()).min(1).max(20),
+ }),
+ z.object({
+ type: z.literal('templateId'),
+ ids: z.array(z.number()).min(1).max(20),
+ }),
+]);
+
+export const ZGetEnvelopesByIdsRequestSchema = z.object({
+ ids: ZEnvelopeIdsSchema,
+});
+
+export const ZGetEnvelopesByIdsResponseSchema = z.object({
+ data: z.array(ZEnvelopeSchema),
+});
+
+export type TGetEnvelopesByIdsRequest = z.infer;
+export type TGetEnvelopesByIdsResponse = z.infer;
diff --git a/packages/trpc/server/envelope-router/router.ts b/packages/trpc/server/envelope-router/router.ts
index f7aad1850..78131f093 100644
--- a/packages/trpc/server/envelope-router/router.ts
+++ b/packages/trpc/server/envelope-router/router.ts
@@ -19,9 +19,11 @@ import { deleteEnvelopeRecipientRoute } from './envelope-recipients/delete-envel
import { getEnvelopeRecipientRoute } from './envelope-recipients/get-envelope-recipient';
import { updateEnvelopeRecipientsRoute } from './envelope-recipients/update-envelope-recipients';
import { findEnvelopeAuditLogsRoute } from './find-envelope-audit-logs';
+import { findEnvelopesRoute } from './find-envelopes';
import { getEnvelopeRoute } from './get-envelope';
import { getEnvelopeItemsRoute } from './get-envelope-items';
import { getEnvelopeItemsByTokenRoute } from './get-envelope-items-by-token';
+import { getEnvelopesByIdsRoute } from './get-envelopes-by-ids';
import { redistributeEnvelopeRoute } from './redistribute-envelope';
import { setEnvelopeFieldsRoute } from './set-envelope-fields';
import { setEnvelopeRecipientsRoute } from './set-envelope-recipients';
@@ -66,10 +68,12 @@ export const envelopeRouter = router({
set: setEnvelopeFieldsRoute,
sign: signEnvelopeFieldRoute,
},
+ find: findEnvelopesRoute,
auditLog: {
find: findEnvelopeAuditLogsRoute,
},
get: getEnvelopeRoute,
+ getMany: getEnvelopesByIdsRoute,
create: createEnvelopeRoute,
use: useEnvelopeRoute,
update: updateEnvelopeRoute,
diff --git a/packages/trpc/server/organisation-router/delete-organisation.ts b/packages/trpc/server/organisation-router/delete-organisation.ts
index f20fede2d..b22a7c4d2 100644
--- a/packages/trpc/server/organisation-router/delete-organisation.ts
+++ b/packages/trpc/server/organisation-router/delete-organisation.ts
@@ -3,6 +3,7 @@ import {
ORGANISATION_USER_ACCOUNT_TYPE,
} from '@documenso/lib/constants/organisations';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
+import { orphanEnvelopes } from '@documenso/lib/server-only/envelope/orphan-envelopes';
import { buildOrganisationWhereQuery } from '@documenso/lib/utils/organisations';
import { prisma } from '@documenso/prisma';
@@ -32,6 +33,19 @@ export const deleteOrganisationRoute = authenticatedProcedure
userId: user.id,
roles: ORGANISATION_MEMBER_ROLE_PERMISSIONS_MAP['DELETE_ORGANISATION'],
}),
+ select: {
+ id: true,
+ owner: {
+ select: {
+ id: true,
+ },
+ },
+ teams: {
+ select: {
+ id: true,
+ },
+ },
+ },
});
if (!organisation) {
@@ -40,6 +54,9 @@ export const deleteOrganisationRoute = authenticatedProcedure
});
}
+ // Orphan all envelopes to get rid of foreign key constraints.
+ await Promise.all(organisation.teams.map(async (team) => orphanEnvelopes({ teamId: team.id })));
+
await prisma.$transaction(async (tx) => {
await tx.account.deleteMany({
where: {
diff --git a/packages/trpc/server/organisation-router/update-organisation-settings.ts b/packages/trpc/server/organisation-router/update-organisation-settings.ts
index 1925beeab..a852a8bd4 100644
--- a/packages/trpc/server/organisation-router/update-organisation-settings.ts
+++ b/packages/trpc/server/organisation-router/update-organisation-settings.ts
@@ -36,6 +36,7 @@ export const updateOrganisationSettingsRoute = authenticatedProcedure
typedSignatureEnabled,
uploadSignatureEnabled,
drawSignatureEnabled,
+ delegateDocumentOwnership,
// Branding related settings.
brandingEnabled,
@@ -99,6 +100,10 @@ export const updateOrganisationSettingsRoute = authenticatedProcedure
const derivedDrawSignatureEnabled =
drawSignatureEnabled ?? organisation.organisationGlobalSettings.drawSignatureEnabled;
+ const derivedDelegateDocumentOwnership =
+ delegateDocumentOwnership ??
+ organisation.organisationGlobalSettings.delegateDocumentOwnership;
+
if (
derivedTypedSignatureEnabled === false &&
derivedUploadSignatureEnabled === false &&
@@ -140,6 +145,7 @@ export const updateOrganisationSettingsRoute = authenticatedProcedure
typedSignatureEnabled,
uploadSignatureEnabled,
drawSignatureEnabled,
+ delegateDocumentOwnership: derivedDelegateDocumentOwnership,
// Branding related settings.
brandingEnabled,
diff --git a/packages/trpc/server/organisation-router/update-organisation-settings.types.ts b/packages/trpc/server/organisation-router/update-organisation-settings.types.ts
index 0193fed54..65389f60f 100644
--- a/packages/trpc/server/organisation-router/update-organisation-settings.types.ts
+++ b/packages/trpc/server/organisation-router/update-organisation-settings.types.ts
@@ -22,6 +22,7 @@ export const ZUpdateOrganisationSettingsRequestSchema = z.object({
typedSignatureEnabled: z.boolean().optional(),
uploadSignatureEnabled: z.boolean().optional(),
drawSignatureEnabled: z.boolean().optional(),
+ delegateDocumentOwnership: z.boolean().nullish(),
// Branding related settings.
brandingEnabled: z.boolean().optional(),
diff --git a/packages/trpc/server/team-router/delete-team.ts b/packages/trpc/server/team-router/delete-team.ts
index 2624a902b..6f53f04c3 100644
--- a/packages/trpc/server/team-router/delete-team.ts
+++ b/packages/trpc/server/team-router/delete-team.ts
@@ -1,4 +1,10 @@
+import { TeamMemberRole } from '@prisma/client';
+
+import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
+import { orphanEnvelopes } from '@documenso/lib/server-only/envelope/orphan-envelopes';
+import { transferTeamEnvelopes } from '@documenso/lib/server-only/envelope/transfer-team-envelopes';
import { deleteTeam } from '@documenso/lib/server-only/team/delete-team';
+import { getTeamById } from '@documenso/lib/server-only/team/get-team';
import { authenticatedProcedure } from '../trpc';
import { ZDeleteTeamRequestSchema, ZDeleteTeamResponseSchema } from './delete-team.types';
@@ -8,15 +14,40 @@ export const deleteTeamRoute = authenticatedProcedure
.input(ZDeleteTeamRequestSchema)
.output(ZDeleteTeamResponseSchema)
.mutation(async ({ input, ctx }) => {
- const { teamId } = input;
+ const { teamId, transferTeamId } = input;
const { user } = ctx;
+ const team = await getTeamById({ userId: user.id, teamId });
+
+ if (team.currentTeamRole !== TeamMemberRole.ADMIN) {
+ throw new AppError(AppErrorCode.UNAUTHORIZED, {
+ message: 'You are not allowed to delete this team',
+ });
+ }
+
ctx.logger.info({
input: {
teamId,
},
});
+ const transferTeam = transferTeamId
+ ? await getTeamById({ userId: user.id, teamId: transferTeamId }).catch(() => {
+ throw new AppError(AppErrorCode.INVALID_REQUEST, {
+ message: 'Invalid transfer team ID',
+ });
+ })
+ : undefined;
+
+ if (transferTeam) {
+ await transferTeamEnvelopes({
+ sourceTeamId: teamId,
+ targetTeamId: transferTeam.id,
+ });
+ } else {
+ await orphanEnvelopes({ teamId });
+ }
+
await deleteTeam({
userId: user.id,
teamId,
diff --git a/packages/trpc/server/team-router/delete-team.types.ts b/packages/trpc/server/team-router/delete-team.types.ts
index f4fe56545..4b5179d6f 100644
--- a/packages/trpc/server/team-router/delete-team.types.ts
+++ b/packages/trpc/server/team-router/delete-team.types.ts
@@ -12,6 +12,7 @@ import { z } from 'zod';
export const ZDeleteTeamRequestSchema = z.object({
teamId: z.number(),
+ transferTeamId: z.number().optional(),
});
export const ZDeleteTeamResponseSchema = z.void();
diff --git a/packages/trpc/server/team-router/update-team-settings.ts b/packages/trpc/server/team-router/update-team-settings.ts
index fc24b4d66..61d084dc7 100644
--- a/packages/trpc/server/team-router/update-team-settings.ts
+++ b/packages/trpc/server/team-router/update-team-settings.ts
@@ -39,6 +39,7 @@ export const updateTeamSettingsRoute = authenticatedProcedure
typedSignatureEnabled,
uploadSignatureEnabled,
drawSignatureEnabled,
+ delegateDocumentOwnership,
// Branding related settings.
brandingEnabled,
@@ -150,6 +151,7 @@ export const updateTeamSettingsRoute = authenticatedProcedure
typedSignatureEnabled,
uploadSignatureEnabled,
drawSignatureEnabled,
+ delegateDocumentOwnership,
// Branding related settings.
brandingEnabled,
diff --git a/packages/trpc/server/team-router/update-team-settings.types.ts b/packages/trpc/server/team-router/update-team-settings.types.ts
index 5e3651dbe..685741f19 100644
--- a/packages/trpc/server/team-router/update-team-settings.types.ts
+++ b/packages/trpc/server/team-router/update-team-settings.types.ts
@@ -26,6 +26,7 @@ export const ZUpdateTeamSettingsRequestSchema = z.object({
typedSignatureEnabled: z.boolean().nullish(),
uploadSignatureEnabled: z.boolean().nullish(),
drawSignatureEnabled: z.boolean().nullish(),
+ delegateDocumentOwnership: z.boolean().nullish(),
// Branding related settings.
brandingEnabled: z.boolean().nullish(),
diff --git a/packages/trpc/server/template-router/get-templates-by-ids.ts b/packages/trpc/server/template-router/get-templates-by-ids.ts
new file mode 100644
index 000000000..95de1503f
--- /dev/null
+++ b/packages/trpc/server/template-router/get-templates-by-ids.ts
@@ -0,0 +1,125 @@
+import { EnvelopeType } from '@prisma/client';
+
+import { getMultipleEnvelopeWhereInput } from '@documenso/lib/server-only/envelope/get-envelopes-by-ids';
+import { mapSecondaryIdToTemplateId } from '@documenso/lib/utils/envelope';
+import { mapFieldToLegacyField } from '@documenso/lib/utils/fields';
+import { mapRecipientToLegacyRecipient } from '@documenso/lib/utils/recipients';
+import { prisma } from '@documenso/prisma';
+
+import { authenticatedProcedure } from '../trpc';
+import {
+ ZGetTemplatesByIdsRequestSchema,
+ ZGetTemplatesByIdsResponseSchema,
+ getTemplatesByIdsMeta,
+} from './get-templates-by-ids.types';
+
+export const getTemplatesByIdsRoute = authenticatedProcedure
+ .meta(getTemplatesByIdsMeta)
+ .input(ZGetTemplatesByIdsRequestSchema)
+ .output(ZGetTemplatesByIdsResponseSchema)
+ .mutation(async ({ input, ctx }) => {
+ const { teamId, user } = ctx;
+ const { templateIds } = input;
+
+ ctx.logger.info({
+ input: {
+ templateIds,
+ },
+ });
+
+ const { envelopeWhereInput } = await getMultipleEnvelopeWhereInput({
+ ids: {
+ type: 'templateId',
+ ids: templateIds,
+ },
+ userId: user.id,
+ teamId,
+ type: EnvelopeType.TEMPLATE,
+ });
+
+ const envelopes = await prisma.envelope.findMany({
+ where: envelopeWhereInput,
+ include: {
+ recipients: {
+ orderBy: {
+ id: 'asc',
+ },
+ },
+ envelopeItems: {
+ select: {
+ documentData: true,
+ },
+ },
+ fields: true,
+ team: {
+ select: {
+ id: true,
+ url: true,
+ },
+ },
+ documentMeta: {
+ select: {
+ signingOrder: true,
+ distributionMethod: true,
+ },
+ },
+ directLink: {
+ select: {
+ token: true,
+ enabled: true,
+ },
+ },
+ },
+ });
+
+ const templates = envelopes.map((envelope) => {
+ const legacyTemplateId = mapSecondaryIdToTemplateId(envelope.secondaryId);
+
+ const firstTemplateDocumentData = envelope.envelopeItems[0].documentData;
+
+ return {
+ id: legacyTemplateId,
+ envelopeId: envelope.id,
+ type: envelope.templateType,
+ visibility: envelope.visibility,
+ externalId: envelope.externalId,
+ title: envelope.title,
+ userId: envelope.userId,
+ teamId: envelope.teamId,
+ authOptions: envelope.authOptions,
+ createdAt: envelope.createdAt,
+ updatedAt: envelope.updatedAt,
+ publicTitle: envelope.publicTitle,
+ publicDescription: envelope.publicDescription,
+ folderId: envelope.folderId,
+ useLegacyFieldInsertion: envelope.useLegacyFieldInsertion,
+ team: envelope.team
+ ? {
+ id: envelope.team.id,
+ url: envelope.team.url,
+ }
+ : null,
+ fields: envelope.fields.map((field) => mapFieldToLegacyField(field, envelope)),
+ recipients: envelope.recipients.map((recipient) =>
+ mapRecipientToLegacyRecipient(recipient, envelope),
+ ),
+ templateMeta: envelope.documentMeta
+ ? {
+ signingOrder: envelope.documentMeta.signingOrder,
+ distributionMethod: envelope.documentMeta.distributionMethod,
+ }
+ : null,
+ directLink: envelope.directLink
+ ? {
+ token: envelope.directLink.token,
+ enabled: envelope.directLink.enabled,
+ }
+ : null,
+ templateDocumentDataId: firstTemplateDocumentData.id, // Backwards compatibility.
+ };
+ });
+
+ return {
+ data: templates,
+ };
+ });
diff --git a/packages/trpc/server/template-router/get-templates-by-ids.types.ts b/packages/trpc/server/template-router/get-templates-by-ids.types.ts
new file mode 100644
index 000000000..87933d53b
--- /dev/null
+++ b/packages/trpc/server/template-router/get-templates-by-ids.types.ts
@@ -0,0 +1,26 @@
+import { z } from 'zod';
+
+import { ZTemplateManySchema } from '@documenso/lib/types/template';
+
+import type { TrpcRouteMeta } from '../trpc';
+
+export const getTemplatesByIdsMeta: TrpcRouteMeta = {
+ openapi: {
+ method: 'POST',
+ path: '/template/get-many',
+ summary: 'Get multiple templates',
+ description: 'Retrieve multiple templates by their IDs',
+ tags: ['Template'],
+ },
+};
+
+export const ZGetTemplatesByIdsRequestSchema = z.object({
+ templateIds: z.array(z.number()).min(1),
+});
+
+export const ZGetTemplatesByIdsResponseSchema = z.object({
+ data: z.array(ZTemplateManySchema),
+});
+
+export type TGetTemplatesByIdsRequest = z.infer;
+export type TGetTemplatesByIdsResponse = z.infer;
diff --git a/packages/trpc/server/template-router/router.ts b/packages/trpc/server/template-router/router.ts
index 157d3acec..2c6c12e30 100644
--- a/packages/trpc/server/template-router/router.ts
+++ b/packages/trpc/server/template-router/router.ts
@@ -30,6 +30,7 @@ import { mapEnvelopeToTemplateLite } from '@documenso/lib/utils/templates';
import { ZGenericSuccessResponse, ZSuccessResponseSchema } from '../schema';
import { authenticatedProcedure, maybeAuthenticatedProcedure, router } from '../trpc';
+import { getTemplatesByIdsRoute } from './get-templates-by-ids';
import {
ZBulkSendTemplateMutationSchema,
ZCreateDocumentFromDirectTemplateRequestSchema,
@@ -154,6 +155,11 @@ export const templateRouter = router({
});
}),
+ /**
+ * @public
+ */
+ getMany: getTemplatesByIdsRoute,
+
/**
* Wait until RR7 so we can passthrough documents.
*
diff --git a/packages/ui/primitives/data-table-pagination.tsx b/packages/ui/primitives/data-table-pagination.tsx
index dd8a10843..94b6b5e5a 100644
--- a/packages/ui/primitives/data-table-pagination.tsx
+++ b/packages/ui/primitives/data-table-pagination.tsx
@@ -23,7 +23,7 @@ export function DataTablePagination({
}: DataTablePaginationProps) {
return (
-
+
{match(additionalInformation)
.with('SelectedCount', () => (
@@ -95,7 +95,9 @@ export function DataTablePagination({
onClick={() => table.setPageIndex(0)}
disabled={!table.getCanPreviousPage()}
>
- Go to first page
+
+ Go to first page
+
({
onClick={() => table.previousPage()}
disabled={!table.getCanPreviousPage()}
>
- Go to previous page
+
+ Go to previous page
+
({
onClick={() => table.nextPage()}
disabled={!table.getCanNextPage()}
>
- Go to next page
+
+ Go to next page
+
({
onClick={() => table.setPageIndex(table.getPageCount() - 1)}
disabled={!table.getCanNextPage()}
>
- Go to last page
+
+ Go to last page
+
diff --git a/packages/ui/primitives/dialog.tsx b/packages/ui/primitives/dialog.tsx
index 59c126fcc..0e28c3008 100644
--- a/packages/ui/primitives/dialog.tsx
+++ b/packages/ui/primitives/dialog.tsx
@@ -1,5 +1,6 @@
import * as React from 'react';
+import { Trans } from '@lingui/react/macro';
import * as DialogPrimitive from '@radix-ui/react-dialog';
import { X } from 'lucide-react';
@@ -38,7 +39,7 @@ const DialogOverlay = React.forwardRef<
- Close
+
+ Close
+
)}
@@ -128,7 +131,7 @@ const DialogDescription = React.forwardRef<
>(({ className, ...props }, ref) => (
));
diff --git a/packages/ui/primitives/document-flow/add-fields.tsx b/packages/ui/primitives/document-flow/add-fields.tsx
index 2fa68cd79..21f97c314 100644
--- a/packages/ui/primitives/document-flow/add-fields.tsx
+++ b/packages/ui/primitives/document-flow/add-fields.tsx
@@ -626,7 +626,7 @@ export const AddFieldsFormPartial = ({
{selectedField && (
Signature
@@ -752,7 +752,7 @@ export const AddFieldsFormPartial = ({
@@ -777,7 +777,7 @@ export const AddFieldsFormPartial = ({
@@ -802,7 +802,7 @@ export const AddFieldsFormPartial = ({
@@ -827,7 +827,7 @@ export const AddFieldsFormPartial = ({
@@ -852,7 +852,7 @@ export const AddFieldsFormPartial = ({
@@ -877,7 +877,7 @@ export const AddFieldsFormPartial = ({
@@ -902,7 +902,7 @@ export const AddFieldsFormPartial = ({
@@ -927,7 +927,7 @@ export const AddFieldsFormPartial = ({
@@ -953,7 +953,7 @@ export const AddFieldsFormPartial = ({
diff --git a/packages/ui/primitives/document-flow/add-subject.tsx b/packages/ui/primitives/document-flow/add-subject.tsx
index c687dcfa1..af49cb210 100644
--- a/packages/ui/primitives/document-flow/add-subject.tsx
+++ b/packages/ui/primitives/document-flow/add-subject.tsx
@@ -257,8 +257,10 @@ export const AddSubjectFormPartial = ({
render={({ field }) => (
- Reply To Email {' '}
- (Optional)
+
+ Reply To Email{' '}
+ (Optional)
+
@@ -295,8 +297,9 @@ export const AddSubjectFormPartial = ({
render={({ field }) => (
- Subject {' '}
- (Optional)
+
+ Subject (Optional)
+
@@ -313,13 +316,14 @@ export const AddSubjectFormPartial = ({
render={({ field }) => (
- Message {' '}
- (Optional)
+
+ Message (Optional)
+
-
+
@@ -327,7 +331,7 @@ export const AddSubjectFormPartial = ({
@@ -356,7 +360,7 @@ export const AddSubjectFormPartial = ({
className="rounded-lg border"
>
{document.status === DocumentStatus.DRAFT ? (
-
+
We won't send anything to notify recipients.
@@ -369,7 +373,7 @@ export const AddSubjectFormPartial = ({
) : (
-
+
{recipients.length === 0 && (
No recipients
@@ -384,10 +388,10 @@ export const AddSubjectFormPartial = ({
{recipient.email}
+ {recipient.email}
}
secondaryText={
-
+
{_(RECIPIENT_ROLES_DESCRIPTION[recipient.role].roleName)}
}
diff --git a/packages/ui/primitives/document-flow/document-flow-root.tsx b/packages/ui/primitives/document-flow/document-flow-root.tsx
index d5ab9ced2..29709e240 100644
--- a/packages/ui/primitives/document-flow/document-flow-root.tsx
+++ b/packages/ui/primitives/document-flow/document-flow-root.tsx
@@ -24,7 +24,7 @@ export const DocumentFlowFormContainer = ({