Compare commits

...

19 Commits

Author SHA1 Message Date
Lucas Smith 36c10d1a92 v2.10.1 2026-05-05 21:02:28 +10:00
Ephraim Duncan 8c0e029b1b feat: add pending signed PDF downloads (#2730) 2026-05-05 17:25:24 +10:00
David Nguyen f10d3284ba feat: remove default personal orgs from custom sso (#2741) 2026-05-05 14:50:07 +10:00
David Nguyen 6a6ef8d2ad feat: allow add myself feature for embeds (#2754) 2026-05-04 15:05:13 +10:00
Lucas Smith 690491c3b1 fix: prevent 2fa users from being flagged as bots (#2748) 2026-05-04 12:45:43 +10:00
Lucas Smith 6243a514af fix: csp frame-ancestors on signing routes 2026-05-02 09:55:51 +10:00
Lucas Smith a697832b43 v2.10.0 2026-05-01 21:58:05 +10:00
Lucas Smith aebb5e2067 fix: assistant signing auth (#2753) 2026-05-01 15:51:58 +10:00
David Nguyen e19b1d00d0 fix: improve embed error messages (#2752) 2026-05-01 14:24:42 +10:00
David Nguyen c428170b5c fix: allow users to download templates (#2746) 2026-04-30 16:50:07 +10:00
David Nguyen 84fc866cfb fix: improve signature rendering quality with high-resolution caching (#2745) 2026-04-30 15:21:09 +10:00
David Nguyen 5d92aaf20a feat: render signatures on pending envelopes (#2743) 2026-04-30 14:43:48 +10:00
Catalin Pit ae497092d7 fix: security improvements (#2593) 2026-04-30 14:43:20 +10:00
David Nguyen 2f4c3893a3 fix: remove envelope title cropping (#2739) 2026-04-28 16:01:19 +10:00
Lucas Smith 61338af216 chore: add translations (#2735) 2026-04-28 14:55:25 +10:00
David Nguyen 2c7a1be051 feat: add envelope ids to certs (#2733) 2026-04-28 14:54:47 +10:00
github-actions[bot] 8bad62cc92 chore: extract translations (#2734) 2026-04-27 10:57:19 +10:00
Lucas Smith 19c2f7b4a1 docs: add signing reminders guide (#2716) 2026-04-27 10:51:14 +10:00
Lucas Smith 135b676cd4 chore: add translations (#2689) 2026-04-27 10:49:09 +10:00
98 changed files with 4219 additions and 1346 deletions
@@ -0,0 +1,94 @@
---
date: 2026-04-22
title: Partial Signed Pdf Download
---
## Summary
Let team members fetch a PDF with all currently-inserted fields burned in while the envelope is still in `PENDING` status. Today the only available bytes for a pending envelope are the original (no fields) - the sealed PDF only materialises after the last recipient signs and the `seal-document` job runs.
Exposed in two places:
- v2 API: `GET /api/v2/envelope/item/{envelopeItemId}/download?version=pending` (API-token auth)
- UI: a `Partial` button in the existing `EnvelopeDownloadDialog`, alongside `Original`. Replaces the `Signed` slot when the envelope is `PENDING`. Backed by the existing session-authed file route `GET /api/files/envelope/{envelopeId}/envelopeItem/{id}/download/pending`.
## Scope
- v2 API only (no v1).
- `internalVersion === 2` envelopes only. Legacy v1 returns 400 `ENVELOPE_LEGACY`.
- Team-side / owner only. No recipient-token download path - recipients have the in-app overlay viewer for verification, and a downloadable half-signed PDF is a leak vector for partially-executed contracts. Enforced both at the server (the recipient-token file route does not accept `pending`) and at the UI (the dialog hides the Partial button when a recipient token is set).
- No PKI signature, no certificate page, no audit log appendix - the response is explicitly not a final executed document.
- No watermark or banner text. The filename suffix (`_pending.pdf`), the `Cache-Control: no-store, private` header, and the absence of a PKI signature are sufficient to signal draft status.
## Behaviour
API response matrix (both `/api/v2/envelope/item/{id}/download?version=pending` and the UI-facing `/api/files/envelope/{envelopeId}/envelopeItem/{id}/download/pending`):
| Envelope status | Response |
|---|---|
| `PENDING` (v2) | 200, PDF with currently-inserted fields burned in |
| `PENDING` (v1) | 400 `ENVELOPE_LEGACY` |
| `DRAFT` | 400 `ENVELOPE_DRAFT` |
| `COMPLETED` | 400 `ENVELOPE_COMPLETED` |
| `REJECTED` | 400 `ENVELOPE_REJECTED` |
All v1-vs-v2 / status-mismatch errors are 4xx so callers can cleanly separate them from real server failures (5xx). Specifically v1 PENDING returns 400 not 501: 5xx is reserved for actual server problems, while "this envelope can't satisfy this request shape" is a client-addressable condition.
Filename: `{title}_pending.pdf`.
ETag is content-addressed over `sha256(envelope.status + sorted((field.id, field.customText, field.signature?.id, field.signature?.created) for inserted===true fields))`. Returns 304 on `If-None-Match` match.
No persistent caching. Generated on-demand per request when ETag misses.
Error response shape (envelope item v2 download route and the team-side file route): preserves the existing `{ error: <message> }` field for backwards compatibility and adds `code: <APP_ERROR_CODE>` as a new field for callers that want to branch on it. The document download route (`/document/{documentId}/download`) is untouched.
## UI
`apps/remix/app/components/dialogs/envelope-download-dialog.tsx`:
- The dialog shows `Original` plus one of:
- `Signed` when status is `COMPLETED` (existing behaviour)
- `Partial` when status is `PENDING`, there is no recipient token, and the envelope is not legacy (`!isLegacy`)
- nothing otherwise
- New optional prop `isLegacy?: boolean`. Only consulted to gate the `Partial` button, so callers whose status can never be `PENDING` (DRAFT/COMPLETED/REJECTED hardcoded, or `isComplete: true` matchers) and callers that always set a recipient token can omit it. Three call sites pass it (`isLegacy={envelope.internalVersion === 1}`): `documents-table-action-dropdown.tsx`, `envelope-editor.tsx`, `document-page-view-dropdown.tsx`. The other eight callers were left alone.
Trade-off: a future team-side dialog usage where status could be PENDING but the dev forgets `isLegacy` will silently not render the Partial button. The status gate prevents an actively broken click; missing button is discoverable in testing. Required-prop alternative was rejected because eight of eleven call sites would carry a meaningless value.
## Files
Server:
- `apps/remix/server/api/download/download.types.ts` - added `'pending'` to the `version` enum; split the validator into `param` (envelopeItemId) + `query` (version). The original wiring as a path-param validator was a pre-existing bug: requests like `?version=original` were silently returning the signed PDF since `version` actually arrives as a query string. Fixed as a side effect.
- `packages/trpc/server/envelope-router/download-envelope-item.types.ts` - mirrored the enum change in the OpenAPI schema.
- `apps/remix/server/api/download/download.ts` - the envelope item v2 route now fetches envelope recipients alongside the envelope, branches on `version` when calling the helper, and emits AppError responses as `{ error, code }` consistently across all status codes.
- `apps/remix/server/api/files/files.types.ts` - added `'pending'` to the team-side download schema only. The recipient-token download schema is untouched, so `/api/files/token/.../download/pending` is rejected by the schema validator.
- `apps/remix/server/api/files/files.ts` - the team-side download handler fetches envelope recipients and dispatches the `pending` branch through the same `handleEnvelopeItemFileRequest` helper. Wrapped in a try/catch that returns `{ error, code }` for AppErrors.
- `apps/remix/server/api/files/files.helpers.ts` - `handleEnvelopeItemFileRequest` is now a single entry point taking a discriminated-union options type. The static-file flow (`signed`/`original`) and the on-demand pending flow are private helpers in the same module.
- `packages/lib/server-only/pdf/generate-partial-signed-pdf.ts` (new) - small orchestrator that loads the original PDF, groups inserted fields by page, calls the existing `insertFieldInPDFV2` overlay helper for each page, flattens, and saves.
- `packages/lib/errors/app-error.ts` - added `ENVELOPE_DRAFT`, `ENVELOPE_COMPLETED`, `ENVELOPE_REJECTED`, `ENVELOPE_LEGACY` codes, all mapped to 400. The legacy-envelope case deliberately returns 4xx rather than 501 to keep "this resource can't satisfy this operation" distinct from real 5xx server failures in caller logs/metrics.
Client:
- `packages/lib/utils/envelope-download.ts` - `EnvelopeItemPdfUrlOptions` download variant now allows `'pending'` as a version. The recipient-token URL builder will produce a URL the server rejects, but the dialog gates on no-token at the call site.
- `packages/lib/client-only/download-pdf.ts` - `DocumentVersion` extended; filename suffix logic moved into a small switch (`_signed.pdf`, `_pending.pdf`, `.pdf`).
- `apps/remix/app/components/dialogs/envelope-download-dialog.tsx` - secondary download derivation with the new `Partial` branch, optional `isLegacy` prop.
- `apps/remix/app/components/tables/documents-table-action-dropdown.tsx`, `apps/remix/app/components/general/envelope-editor/envelope-editor.tsx`, `apps/remix/app/components/general/document/document-page-view-dropdown.tsx` - pass `isLegacy={envelope.internalVersion === 1}` (or `row.internalVersion === 1`) to the dialog.
## Verification
1. E2E (`packages/app-tests/e2e/api/v2/partial-signed-pdf-download.spec.ts`):
- Pending envelope, recipient 1 signs, API token download with `?version=pending` returns 200 + PDF; subsequent call with `If-None-Match: <etag>` returns 304; after recipient 2 completes the envelope flips to `COMPLETED` and the same call returns 400 `ENVELOPE_COMPLETED`; `?version=signed` then succeeds.
- Draft envelope returns 400 `ENVELOPE_DRAFT`.
- `internalVersion === 1` pending envelope returns 400 `ENVELOPE_LEGACY`.
2. `npx tsc --noEmit -p apps/remix/tsconfig.json` and `npm run lint`.
3. Manual: open the Documents table or envelope editor on a PENDING envelope (v2), open the download dialog, confirm `Partial` appears alongside `Original` and produces a `_pending.pdf` with current fields burned in. Same dialog on a COMPLETED envelope shows `Signed`. Same dialog on a v1 PENDING envelope shows neither (status gate would show Partial, but the `isLegacy` flag filters it out).
## Out of Scope / Follow-ups
- Recipient-token download path (API and UI) - decided against. Revisit if there is concrete demand and a story for limiting the leak vector.
- v1 API parity / v1 partial rendering - not building. Implementing partial for v1 would require porting `legacy_insertFieldInPDF` / `insertFieldInPDFV1` into a partial-only flow, which is code with no long-term home as v1 is being phased out.
- Document download route (`/document/{documentId}/download`) - untouched. Same error shape and validator wiring as before. Consider normalising to the same `{ error, code }` shape in a follow-up if any caller wants to branch on `code` from that route.
- Persistent caching layer / job-queue generation - revisit if p95 latency on large PDFs becomes an issue.
- Specific toast for `ENVELOPE_LEGACY` in the dialog - currently the catch-all "Something went wrong" handles it. Worth a polish if v1 PENDING envelopes are common in your data and we see complaints. (Note: with the `isLegacy` gate at the UI, the error is unreachable from the dialog itself; the API can still surface it for direct callers.)
@@ -102,17 +102,18 @@ const EnvelopeEditor = ({ presignToken, envelopeId }) => {
### All V2 Authoring Components
| Prop | Type | Required | Description |
| ------------------ | --------- | -------- | -------------------------------------------------------- |
| `presignToken` | `string` | Yes | Authentication token from your backend |
| `externalId` | `string` | No | Your reference ID to link with the envelope |
| `host` | `string` | No | Custom host URL. Defaults to `https://app.documenso.com` |
| `css` | `string` | No | Custom CSS string (Platform Plan) |
| `cssVars` | `object` | No | [CSS variable](/docs/developers/embedding/css-variables) overrides (Platform Plan) |
| `darkModeDisabled` | `boolean` | No | Disable dark mode (Platform Plan) |
| `language` | `string` | No | Set the UI language. See [Supported Languages](https://github.com/documenso/documenso/tree/main/packages/lib/constants/locales.ts) |
| `className` | `string` | No | CSS class for the iframe |
| `features` | `object` | No | Feature toggles for the authoring experience |
| Prop | Type | Required | Description |
| ---------------- | --------- | -------- | -------------------------------------------------------- |
| `presignToken` | `string` | Yes | Authentication token from your backend |
| `externalId` | `string` | No | Your reference ID to link with the envelope |
| `host` | `string` | No | Custom host URL. Defaults to `https://app.documenso.com` |
| `css` | `string` | No | Custom CSS string (Platform Plan) |
| `cssVars` | `object` | No | [CSS variable](/docs/developers/embedding/css-variables) overrides (Platform Plan) |
| `darkModeDisabled` | `boolean` | No | Disable dark mode (Platform Plan) |
| `language` | `string` | No | Set the UI language. See [Supported Languages](https://github.com/documenso/documenso/tree/main/packages/lib/constants/locales.ts) |
| `className` | `string` | No | CSS class for the iframe |
| `user` | `object` | No | Current user info. When provided, enables the "Add Myself" button in the recipients list. Object with optional `email` and `name` fields |
| `features` | `object` | No | Feature toggles for the authoring experience |
### Create Component Only
@@ -29,4 +29,9 @@ description: Advanced document features including PDF placeholders, AI detection
description="Set a signing deadline so document links expire after a configurable period."
href="/docs/users/documents/advanced/recipient-expiration"
/>
<Card
title="Signing Reminders"
description="Automatically email recipients who have not yet signed on a configurable schedule."
href="/docs/users/documents/advanced/signing-reminders"
/>
</Cards>
@@ -6,6 +6,7 @@
"ai-detection",
"default-recipients",
"document-visibility",
"recipient-expiration"
"recipient-expiration",
"signing-reminders"
]
}
@@ -0,0 +1,195 @@
---
title: Signing Reminders
description: Automatically email recipients who have not yet signed on a configurable schedule.
---
import { Callout } from 'fumadocs-ui/components/callout';
import { Step, Steps } from 'fumadocs-ui/components/steps';
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
## Overview
Signing reminders automatically email recipients who have not completed their signing. You configure when the first reminder goes out and how often it repeats — Documenso handles the rest until the recipient signs or the document leaves a pending state.
This is useful when:
- You want recipients nudged without having to track them down manually
- A deadline is approaching and you want to escalate gradually
- You send a high volume of documents and cannot chase each one
Reminders are tracked **per recipient**, not per document. Each unsigned recipient is on their own schedule based on when they were emailed.
This is different from the **Resend** action covered in [Send Documents](/docs/users/documents/send), which is a one-off manual nudge. Reminders are scheduled and recurring.
## Default Behaviour
Every **newly created** organisation starts with reminders **enabled**:
- First reminder sent **5 days** after the recipient is emailed
- Repeats **every 2 days** until the recipient signs
You can change this default at the organisation or team level, or override it per document.
<Callout type="info">
Organisations created **before this feature shipped** have reminders left blank (no default) so
recipients of in-flight or future documents are not unexpectedly sent reminders. To enable
reminders for an existing organisation, configure **Default Signing Reminders** under
**Organisation Settings > Preferences > Document**.
</Callout>
## Settings Cascade
Reminder settings follow a three-level cascade: **Organisation → Team → Document**. Each level can override the one above it, or inherit from it.
<Tabs items={['Organisation', 'Team', 'Document']}>
<Tab value="Organisation">
Sets the default for all teams in the organisation. Options are **Enabled** (set when the first reminder fires and how often it repeats) or **No reminders**.
To configure, navigate to **Organisation Settings > Preferences > Document** and find **Default Signing Reminders**.
</Tab>
<Tab value="Team">
Overrides the organisation default for documents created within this team. Options are **Enabled**, **No reminders**, or **Inherit from organisation**.
New teams default to **Inherit from organisation**.
To configure, navigate to **Team Settings > Preferences > Document** and find **Default Signing Reminders**.
</Tab>
<Tab value="Document">
Overrides the team or organisation default for a single document. Options are **Enabled**, **No reminders**, or **Inherit from organisation**.
If you do not change reminders when editing a document, the team or organisation default applies.
</Tab>
</Tabs>
## Set Reminders for a Document
{/* prettier-ignore */}
<Steps>
<Step>
### Open the document settings
In the document editor, open the **Settings** dialog and go to the **Reminders** tab.
</Step>
<Step>
### Choose a mode
- **Enabled** — Documenso sends reminders on the schedule you configure below
- **No reminders** — no automatic reminders for this document
- **Inherit from organisation** — use the team or organisation default
</Step>
<Step>
### Configure the schedule
When **Enabled**, set:
- **Send first reminder after** — a number and unit (days, weeks, or months) measured from when the recipient is first emailed
- **Then repeat every** — either **Custom interval** (a number and unit) or **Don't repeat** (only one reminder is ever sent)
</Step>
<Step>
### Send the document
The first reminder is scheduled when the recipient receives the initial signing email. Subsequent reminders are scheduled from the time the previous reminder was sent.
</Step>
</Steps>
<Callout type="info">
Editing reminder settings on a document that is already pending recalculates the next reminder for
every unsigned recipient immediately.
</Callout>
## Set a Default Reminder Schedule
{/* prettier-ignore */}
<Steps>
<Step>
### Navigate to document preferences
Go to **Organisation Settings > Preferences > Document** (or **Team Settings > Preferences > Document** for team-level overrides).
</Step>
<Step>
### Configure the default
Find **Default Signing Reminders** and choose:
- **Enabled** — set the first-reminder delay and repeat interval
- **No reminders** — disable reminders by default
- **Inherit from organisation** (team level only) — use whatever the organisation has configured
</Step>
<Step>
### Save
Click **Save** to apply. New documents created after this change use the updated default. Documents already in flight are unaffected unless you edit their reminder settings directly.
</Step>
</Steps>
## What Happens When a Reminder Fires
When a recipient's next reminder time arrives:
1. Documenso sends the reminder email — same template as the original signing request, but the subject and preview are prefixed with **"Reminder:"**.
2. An audit log entry is created for the recipient (an `EMAIL_SENT` entry of type `REMINDER`).
3. The `document.reminder.sent` webhook fires. See [webhook events](/docs/developers/webhooks/events).
4. The next reminder is scheduled based on **Then repeat every**, or no further reminder is scheduled if you chose **Don't repeat**.
Reminders stop automatically when the recipient signs, declines, the recipient's signing deadline passes, or the document leaves the pending state (completed, rejected, or deleted).
## When Reminders Are Skipped
A configured reminder will not be sent in the following cases:
- The recipient is a **CC** — CCs are notified once and never reminded
- The recipient's **signing deadline has passed** — see [Recipient Expiration](/docs/users/documents/advanced/recipient-expiration). Resending the document refreshes the deadline and resumes reminders.
- The document uses **manual link distribution** — Documenso never emails recipients for these documents
- The envelope's email settings have **signing request emails disabled**
- The recipient has not yet been emailed (for example, an unreached step in a sequential workflow)
<Callout type="info">
Reminders stop automatically **30 days after the recipient was first emailed**, regardless of the
repeat interval. This hard cap prevents runaway reminder chains for recipients who never sign and
have no expiration set. If you need a different stop condition, set a shorter repeat interval,
use **Don't repeat**, or configure [recipient expiration](/docs/users/documents/advanced/recipient-expiration).
</Callout>
<Callout type="info">
Reminders are dispatched by a background sweep that runs every 15 minutes, so the actual send time
may be up to ~15 minutes after the scheduled time.
</Callout>
## Reminder Options Reference
| Setting | Options | Notes |
| --------------------------- | ---------------------------------------- | -------------------------------------------------------------------- |
| **Mode** | Enabled / No reminders / Inherit | Inherit is only available at the team and document levels |
| **Send first reminder after** | 1+ days, weeks, or months | Measured from when the recipient receives the initial signing email. Reminders past 30 days from that moment are skipped. |
| **Then repeat every** | Custom interval (1+ days/weeks/months) or Don't repeat | Custom interval keeps reminding until the recipient signs or the 30-day cap is reached |
The organisation default out of the box is **first reminder after 5 days, repeating every 2 days**, which falls well inside the 30-day cap.
---
## See Also
- [Send Documents](/docs/users/documents/send) - Send documents and trigger a one-off resend
- [Recipient Expiration](/docs/users/documents/advanced/recipient-expiration) - Set a hard signing deadline
- [Document Preferences](/docs/users/organisations/preferences/document) - Configure default document settings
- [Webhook Events](/docs/developers/webhooks/events) - Subscribe to `document.reminder.sent`
@@ -33,6 +33,7 @@ To access the preferences, navigate to either the organisation or teams settings
| **Include the Audit Logs** | Whether the audit logs are embedded in the document when downloaded. The audit logs are always available separately from the logs page. |
| **Default Recipients** | Recipients that are automatically added to new documents. Can be overridden per document. |
| **Default Envelope Expiration** | How long recipients have to sign before the signing link expires. See [recipient expiration](/docs/users/documents/advanced/recipient-expiration). |
| **Default Signing Reminders** | When and how often to email recipients who have not yet signed. See [signing reminders](/docs/users/documents/advanced/signing-reminders). |
| **Delegate Document Ownership** | Allow team API tokens to delegate document ownership to another team member. |
| **AI Features** | Enable AI-powered features such as automatic recipient detection. Only shown if AI features are configured on the instance. |
@@ -1,4 +1,4 @@
import { useState } from 'react';
import { useMemo, useState } from 'react';
import { useLingui } from '@lingui/react/macro';
import { Trans } from '@lingui/react/macro';
@@ -24,6 +24,19 @@ type EnvelopeItemToDownload = Pick<EnvelopeItem, 'id' | 'envelopeId' | 'title' |
type EnvelopeDownloadDialogProps = {
envelopeId: string;
envelopeStatus: DocumentStatus;
/**
* Whether the envelope is a legacy (v1) envelope. Only consulted to gate the
* partial-download variant: legacy envelopes use a different field-rendering
* pipeline that the partial PDF helper does not implement, so the Partial
* button is hidden for them.
*
* Optional: omit it on call sites where the status can never be PENDING (DRAFT,
* COMPLETED, REJECTED) or when a recipient token is set, since the Partial button
* is also gated on those. Pass it from team-side call sites that can render the
* dialog for a PENDING envelope.
*/
isLegacy?: boolean;
envelopeItems?: EnvelopeItemToDownload[];
/**
@@ -38,6 +51,7 @@ type EnvelopeDownloadDialogProps = {
export const EnvelopeDownloadDialog = ({
envelopeId,
envelopeStatus,
isLegacy,
envelopeItems: initialEnvelopeItems,
token,
trigger,
@@ -51,8 +65,36 @@ export const EnvelopeDownloadDialog = ({
[envelopeItemIdAndVersion: string]: boolean;
}>({});
const generateDownloadKey = (envelopeItemId: string, version: 'original' | 'signed') =>
`${envelopeItemId}-${version}`;
const generateDownloadKey = (
envelopeItemId: string,
version: 'original' | 'signed' | 'pending',
) => `${envelopeItemId}-${version}`;
// The dialog shows the original document alongside one of:
// - "Signed" (when the envelope is COMPLETED)
// - "Partial" (when the envelope is PENDING, not legacy, and we are on the
// team/owner side; recipients are intentionally not offered this since the
// partial PDF carries no PKI signature and would create a leak vector for
// half-executed contracts; legacy envelopes use a different rendering
// pipeline that the partial-download helper does not implement)
// - nothing (DRAFT, REJECTED, PENDING with recipient token, or legacy PENDING)
const secondaryDownload = useMemo<{ version: 'signed' | 'pending'; label: string } | null>(() => {
if (envelopeStatus === DocumentStatus.COMPLETED) {
return {
version: 'signed',
label: t({ message: 'Signed', context: 'Signed document (adjective)' }),
};
}
if (envelopeStatus === DocumentStatus.PENDING && !token && !isLegacy) {
return {
version: 'pending',
label: t({ message: 'Partial', context: 'Partially signed document (adjective)' }),
};
}
return null;
}, [envelopeStatus, isLegacy, token, t]);
const { data: envelopeItemsPayload, isLoading: isLoadingEnvelopeItems } =
trpc.envelope.item.getManyByToken.useQuery(
@@ -70,7 +112,7 @@ export const EnvelopeDownloadDialog = ({
const onDownload = async (
envelopeItem: EnvelopeItemToDownload,
version: 'original' | 'signed',
version: 'original' | 'signed' | 'pending',
) => {
const { id: envelopeItemId } = envelopeItem;
@@ -132,7 +174,7 @@ export const EnvelopeDownloadDialog = ({
{Array.from({ length: 1 }).map((_, index) => (
<div
key={index}
className="border-border bg-card flex items-center gap-2 rounded-lg border p-4"
className="flex items-center gap-2 rounded-lg border border-border bg-card p-4"
>
<Skeleton className="h-10 w-10 flex-shrink-0 rounded-lg" />
@@ -149,20 +191,20 @@ export const EnvelopeDownloadDialog = ({
envelopeItems.map((item) => (
<div
key={item.id}
className="border-border bg-card hover:bg-accent/50 flex items-center gap-4 rounded-lg border p-4 transition-colors"
className="flex items-center gap-4 rounded-lg border border-border bg-card p-4 transition-colors hover:bg-accent/50"
>
<div className="flex-shrink-0">
<div className="bg-primary/10 flex h-10 w-10 items-center justify-center rounded-lg">
<FileTextIcon className="text-primary h-5 w-5" />
<div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10">
<FileTextIcon className="h-5 w-5 text-primary" />
</div>
</div>
<div className="min-w-0 flex-1">
{/* Todo: Envelopes - Fix overflow */}
<h4 className="text-foreground truncate text-sm font-medium" title={item.title}>
<h4 className="truncate text-sm font-medium text-foreground" title={item.title}>
{item.title}
</h4>
<p className="text-muted-foreground mt-0.5 text-xs">
<p className="mt-0.5 text-xs text-muted-foreground">
<Trans>PDF Document</Trans>
</p>
</div>
@@ -181,18 +223,20 @@ export const EnvelopeDownloadDialog = ({
<Trans context="Original document (adjective)">Original</Trans>
</Button>
{envelopeStatus === DocumentStatus.COMPLETED && (
{secondaryDownload && (
<Button
variant="default"
size="sm"
className="text-xs"
onClick={async () => onDownload(item, 'signed')}
loading={isDownloadingState[generateDownloadKey(item.id, 'signed')]}
onClick={async () => onDownload(item, secondaryDownload.version)}
loading={
isDownloadingState[generateDownloadKey(item.id, secondaryDownload.version)]
}
>
{!isDownloadingState[generateDownloadKey(item.id, 'signed')] && (
<DownloadIcon className="mr-2 h-4 w-4" />
)}
<Trans context="Signed document (adjective)">Signed</Trans>
{!isDownloadingState[
generateDownloadKey(item.id, secondaryDownload.version)
] && <DownloadIcon className="mr-2 h-4 w-4" />}
{secondaryDownload.label}
</Button>
)}
</div>
@@ -114,7 +114,7 @@ export const TemplateBulkSendDialog = ({
<Dialog>
<DialogTrigger asChild>
{trigger ?? (
<Button variant="outline">
<Button variant="outline" className="shrink-0" size="sm">
<Upload className="mr-2 h-4 w-4" />
<Trans>Bulk Send via CSV</Trans>
</Button>
@@ -55,6 +55,7 @@ type TemplateDirectLinkDialogProps = {
directLink?: Pick<TemplateDirectLink, 'token' | 'enabled'> | null;
recipients: TRecipientLite[];
trigger?: React.ReactNode;
triggerSizeVariant?: 'default' | 'sm' | 'lg';
onCreateSuccess?: () => Promise<void> | void;
onDeleteSuccess?: () => Promise<void> | void;
};
@@ -66,6 +67,7 @@ export const TemplateDirectLinkDialog = ({
directLink,
recipients,
trigger,
triggerSizeVariant = 'sm',
onCreateSuccess,
onDeleteSuccess,
}: TemplateDirectLinkDialogProps) => {
@@ -208,7 +210,7 @@ export const TemplateDirectLinkDialog = ({
<Dialog open={open} onOpenChange={(value) => !isLoading && setOpen(value)}>
<DialogTrigger asChild>
{trigger || (
<Button variant="outline" className="px-3">
<Button variant="outline" className="shrink-0 px-3" size={triggerSizeVariant}>
<LinkIcon className="mr-1.5 h-3.5 w-3.5" />
{directLink ? <Trans>Manage Direct Link</Trans> : <Trans>Create Direct Link</Trans>}
@@ -1,7 +1,25 @@
import { Trans } from '@lingui/react/macro';
import { Link } from 'react-router';
import { SUPPORT_EMAIL } from '@documenso/lib/constants/app';
export const EmbedPaywall = () => {
return (
<div>
<h1>Paywall</h1>
<div className="flex min-h-screen items-center justify-center p-4">
<div className="text-center text-muted-foreground">
<p className="text-lg font-semibold">
<Trans>This feature is not available on your current plan</Trans>
</p>
<p className="mt-2 text-sm">
<Trans>
Please contact{' '}
<Link to={`mailto:${SUPPORT_EMAIL}`} target="_blank">
support
</Link>{' '}
if you have any questions.
</Trans>
</p>
</div>
</div>
);
};
+2 -4
View File
@@ -6,6 +6,7 @@ import { useForm } from 'react-hook-form';
import { z } from 'zod';
import { useSession } from '@documenso/lib/client-only/providers/session';
import { ZNameSchema } from '@documenso/lib/constants/auth';
import { trpc } from '@documenso/trpc/react';
import { cn } from '@documenso/ui/lib/utils';
import { Button } from '@documenso/ui/primitives/button';
@@ -23,10 +24,7 @@ import { SignaturePadDialog } from '@documenso/ui/primitives/signature-pad/signa
import { useToast } from '@documenso/ui/primitives/use-toast';
export const ZProfileFormSchema = z.object({
name: z
.string()
.trim()
.min(1, { message: msg`Please enter a valid name.`.id }),
name: ZNameSchema,
signature: z.string().min(1, { message: msg`Signature Pad cannot be empty.`.id }),
});
+27 -2
View File
@@ -106,6 +106,7 @@ export const SignInForm = ({
const turnstileSiteKey = env('NEXT_PUBLIC_TURNSTILE_SITE_KEY');
const turnstileRef = useRef<TurnstileInstance>(null);
const twoFactorTurnstileRef = useRef<TurnstileInstance>(null);
const [captchaToken, setCaptchaToken] = useState<string | null>(null);
const [isPasskeyLoading, setIsPasskeyLoading] = useState(false);
@@ -234,6 +235,11 @@ export const SignInForm = ({
if (error.code === 'TWO_FACTOR_MISSING_CREDENTIALS') {
setIsTwoFactorAuthenticationDialogOpen(true);
// Turnstile tokens are single-use. Clear the consumed one so the
// dialog's fresh widget mounts cleanly and the dialog can't be
// submitted with the stale token before a new one is issued.
setCaptchaToken(null);
return;
}
@@ -393,7 +399,7 @@ export const SignInForm = ({
)}
/>
{turnstileSiteKey && (
{turnstileSiteKey && !isTwoFactorAuthenticationDialogOpen && (
<Turnstile
ref={turnstileRef}
siteKey={turnstileSiteKey}
@@ -545,6 +551,21 @@ export const SignInForm = ({
/>
)}
{turnstileSiteKey && (
<div className="mt-4">
<Turnstile
ref={twoFactorTurnstileRef}
siteKey={turnstileSiteKey}
onSuccess={setCaptchaToken}
onExpire={() => setCaptchaToken(null)}
options={{
size: 'flexible',
appearance: 'interaction-only',
}}
/>
</div>
)}
<DialogFooter className="mt-4">
<Button
type="button"
@@ -558,7 +579,11 @@ export const SignInForm = ({
)}
</Button>
<Button type="submit" loading={isSubmitting}>
<Button
type="submit"
loading={isSubmitting}
disabled={Boolean(turnstileSiteKey) && !captchaToken}
>
{isSubmitting ? <Trans>Signing in...</Trans> : <Trans>Sign In</Trans>}
</Button>
</DialogFooter>
+3 -5
View File
@@ -16,6 +16,7 @@ import { z } from 'zod';
import communityCardsImage from '@documenso/assets/images/community-cards.png';
import { authClient } from '@documenso/auth/client';
import { useAnalytics } from '@documenso/lib/client-only/hooks/use-analytics';
import { ZNameSchema } from '@documenso/lib/constants/auth';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { env } from '@documenso/lib/utils/env';
import { zEmail } from '@documenso/lib/utils/zod';
@@ -39,10 +40,7 @@ import { UserProfileTimur } from '~/components/general/user-profile-timur';
export const ZSignUpFormSchema = z
.object({
name: z
.string()
.trim()
.min(1, { message: msg`Please enter a valid name.`.id }),
name: ZNameSchema,
email: zEmail().min(1),
password: ZPasswordSchema,
signature: z.string().min(1, { message: msg`We need your signature to sign documents`.id }),
@@ -60,7 +58,7 @@ export const ZSignUpFormSchema = z
export const SIGNUP_ERROR_MESSAGES: Record<string, MessageDescriptor> = {
SIGNUP_DISABLED: msg`Signup is currently disabled or not available for your email domain.`,
[AppErrorCode.ALREADY_EXISTS]: msg`User with this email already exists. Please use a different email address.`,
[AppErrorCode.ALREADY_EXISTS]: msg`We were unable to create your account. If you already have an account, try signing in instead.`,
[AppErrorCode.INVALID_REQUEST]: msg`We were unable to create your account. Please review the information you provided and try again.`,
};
@@ -104,7 +104,8 @@ export const DocumentPageViewDropdown = ({ envelope }: DocumentPageViewDropdownP
<EnvelopeDownloadDialog
envelopeId={envelope.id}
envelopeStatus={envelope.status}
token={recipient?.token}
isLegacy={envelope.internalVersion === 1}
token={canManageDocument ? undefined : recipient?.token}
envelopeItems={envelope.envelopeItems}
trigger={
<DropdownMenuItem asChild onSelect={(e) => e.preventDefault()}>
@@ -74,8 +74,8 @@ export default function EnvelopeEditorHeader() {
return (
<nav className="w-full border-b border-border bg-background px-4 py-3 md:px-6">
<div className="flex items-center justify-between">
<div className="flex items-center space-x-4">
<div className="flex items-center justify-between gap-4">
<div className="flex min-w-0 flex-1 items-center space-x-4">
{editorConfig.embedded?.customBrandingLogo ? (
<img
src={`/api/branding/logo/team/${envelope.teamId}`}
@@ -87,9 +87,9 @@ export default function EnvelopeEditorHeader() {
<BrandingLogo className="h-6 w-auto" />
</Link>
)}
<Separator orientation="vertical" className="h-6" />
<Separator orientation="vertical" className="h-6 shrink-0" />
<div className="flex items-center space-x-2">
<div className="flex min-w-0 items-center space-x-2">
<EnvelopeItemTitleInput
dataTestId="envelope-title-input"
disabled={!envelopeItemPermissions.canTitleBeChanged || !allowConfigureEnvelopeTitle}
@@ -107,19 +107,19 @@ export default function EnvelopeEditorHeader() {
{envelope.type === EnvelopeType.TEMPLATE && (
<>
{envelope.templateType === TemplateType.PRIVATE && (
<Badge variant="secondary">
<Badge variant="secondary" className="shrink-0">
<LockIcon className="mr-2 h-4 w-4 text-blue-600 dark:text-blue-300" />
<Trans>Private Template</Trans>
</Badge>
)}
{envelope.templateType === TemplateType.ORGANISATION && (
<Badge variant="orange">
<Badge variant="orange" className="shrink-0">
<Building2Icon className="mr-2 size-4" />
<Trans>Organisation Template</Trans>
</Badge>
)}
{envelope.templateType === TemplateType.PUBLIC && (
<Badge variant="default">
<Badge variant="default" className="shrink-0">
<Globe2Icon className="mr-2 h-4 w-4 text-green-500 dark:text-green-300" />
<Trans>Public Template</Trans>
</Badge>
@@ -127,7 +127,7 @@ export default function EnvelopeEditorHeader() {
{envelope.directLink?.token && (
<TemplateDirectLinkBadge
className="py-1"
className="shrink-0 py-1"
token={envelope.directLink.token}
enabled={envelope.directLink.enabled}
/>
@@ -138,22 +138,22 @@ export default function EnvelopeEditorHeader() {
{envelope.type === EnvelopeType.DOCUMENT &&
match(envelope.status)
.with(DocumentStatus.DRAFT, () => (
<Badge variant="warning">
<Badge variant="warning" className="shrink-0">
<Trans>Draft</Trans>
</Badge>
))
.with(DocumentStatus.PENDING, () => (
<Badge variant="secondary">
<Badge variant="secondary" className="shrink-0">
<Trans>Pending</Trans>
</Badge>
))
.with(DocumentStatus.COMPLETED, () => (
<Badge variant="default">
<Badge variant="default" className="shrink-0">
<Trans>Completed</Trans>
</Badge>
))
.with(DocumentStatus.REJECTED, () => (
<Badge variant="destructive">
<Badge variant="destructive" className="shrink-0">
<Trans>Rejected</Trans>
</Badge>
))
@@ -161,7 +161,7 @@ export default function EnvelopeEditorHeader() {
{autosaveError && (
<>
<Badge variant="destructive">
<Badge variant="destructive" className="shrink-0">
<AlertTriangleIcon className="mr-2 h-4 w-4" />
<Trans>Sync failed, changes not saved</Trans>
</Badge>
@@ -171,7 +171,7 @@ export default function EnvelopeEditorHeader() {
window.location.reload();
}}
>
<Badge variant="destructive">
<Badge variant="destructive" className="shrink-0">
<RefreshCwIcon className="mr-2 h-4 w-4" />
<Trans>Reload</Trans>
</Badge>
@@ -181,7 +181,7 @@ export default function EnvelopeEditorHeader() {
</div>
</div>
<div className="flex items-center space-x-2">
<div className="flex shrink-0 items-center space-x-2">
{allowAttachments &&
(isEmbedded ? (
<EmbeddedEditorAttachmentPopover buttonSize="sm" />
@@ -208,8 +208,14 @@ export const EnvelopeEditorRecipientForm = () => {
envelope.fields.filter((field) => field.recipientId === signer.id).length === 0,
);
const currentEditorEmail = isEmbedded ? editorConfig.embedded?.user?.email : user?.email;
const currentEditorName = isEmbedded ? editorConfig.embedded?.user?.name : user?.name;
const hasCurrentEditorInfo = Boolean(currentEditorEmail || currentEditorName);
const isUserAlreadyARecipient = watchedSigners.some(
(signer) => signer.email.toLowerCase() === user?.email?.toLowerCase(),
(signer) => signer.email.toLowerCase() === currentEditorEmail?.toLowerCase(),
);
const hasDocumentBeenSent = recipients.some(
@@ -344,11 +350,11 @@ export const EnvelopeEditorRecipientForm = () => {
const onAddSelfSigner = () => {
if (emptySignerIndex !== -1) {
setValue(`signers.${emptySignerIndex}.name`, user?.name ?? '', {
setValue(`signers.${emptySignerIndex}.name`, currentEditorName ?? '', {
shouldValidate: true,
shouldDirty: true,
});
setValue(`signers.${emptySignerIndex}.email`, user?.email ?? '', {
setValue(`signers.${emptySignerIndex}.email`, currentEditorEmail ?? '', {
shouldValidate: true,
shouldDirty: true,
});
@@ -358,8 +364,8 @@ export const EnvelopeEditorRecipientForm = () => {
appendSigner(
{
formId: nanoid(12),
name: user?.name ?? '',
email: user?.email ?? '',
name: currentEditorName ?? '',
email: currentEditorEmail ?? '',
role: RecipientRole.SIGNER,
actionAuth: [],
signingOrder:
@@ -635,7 +641,7 @@ export const EnvelopeEditorRecipientForm = () => {
</Tooltip>
)}
{!isEmbedded && (
{(!isEmbedded || hasCurrentEditorInfo) && (
<Button
variant="outline"
className="flex flex-row items-center"
@@ -3,6 +3,9 @@ import { useEffect, useRef, useState } from 'react';
import { ZDocumentTitleSchema } from '@documenso/trpc/server/document-router/schema';
import { cn } from '@documenso/ui/lib/utils';
const MIN_INPUT_WIDTH = 100;
const INPUT_WIDTH_PADDING = 16;
export type EnvelopeItemTitleInputProps = {
value: string;
onChange: (value: string) => void;
@@ -27,11 +30,12 @@ export const EnvelopeItemTitleInput = ({
const inputRef = useRef<HTMLInputElement>(null);
const measureRef = useRef<HTMLSpanElement>(null);
// Update input width based on content
useEffect(() => {
if (measureRef.current) {
const width = measureRef.current.offsetWidth;
setInputWidth(Math.max(width + 16, 100)); // Add padding and minimum width
const nextInputWidth = Math.max(width + INPUT_WIDTH_PADDING, MIN_INPUT_WIDTH);
setInputWidth(nextInputWidth);
}
}, [envelopeItemTitle]);
@@ -55,7 +59,7 @@ export const EnvelopeItemTitleInput = ({
};
return (
<div className="relative">
<div className="relative min-w-0 max-w-full shrink">
{/* Hidden span to measure text width */}
<span
ref={measureRef}
@@ -73,9 +77,9 @@ export const EnvelopeItemTitleInput = ({
value={envelopeItemTitle}
onChange={(e) => handleTitleChange(e.target.value)}
disabled={disabled}
style={{ width: `${inputWidth}px` }}
style={{ width: `${inputWidth}px`, maxWidth: '100%' }}
className={cn(
'rounded-sm border-0 bg-transparent p-1 text-sm font-medium text-foreground outline-none hover:outline hover:outline-1 hover:outline-muted-foreground focus:outline focus:outline-1 focus:outline-muted-foreground',
'max-w-full rounded-sm border-0 bg-transparent p-1 text-sm font-medium text-foreground outline-none hover:outline hover:outline-1 hover:outline-muted-foreground focus:outline focus:outline-1 focus:outline-muted-foreground',
className,
{
'outline-red-500': isError,
@@ -525,7 +525,7 @@ export const EnvelopeEditorUploadPage = () => {
snapshot.isDragging ? 'shadow-md' : ''
}`}
>
<div className="flex items-center space-x-3">
<div className="flex min-w-0 items-center space-x-3">
{uploadConfig?.allowConfigureOrder && (
<div
{...provided.dragHandleProps}
@@ -536,7 +536,7 @@ export const EnvelopeEditorUploadPage = () => {
</div>
)}
<div>
<div className="min-w-0">
{localFile.envelopeItemId !== null ? (
<EnvelopeItemTitleInput
disabled={
@@ -564,7 +564,7 @@ export const EnvelopeEditorUploadPage = () => {
</div>
</div>
</div>
<div className="flex items-center space-x-2">
<div className="flex shrink-0 items-center space-x-2">
{localFile.isUploading && (
<div className="flex h-6 w-10 items-center justify-center">
<Loader2Icon className="h-4 w-4 animate-spin text-muted-foreground" />
@@ -495,6 +495,7 @@ export const EnvelopeEditor = () => {
<EnvelopeDownloadDialog
envelopeId={envelope.id}
envelopeStatus={envelope.status}
isLegacy={envelope.internalVersion === 1}
envelopeItems={envelope.envelopeItems}
trigger={
<Button
@@ -25,12 +25,17 @@ export const EnvelopeGenericPageRenderer = ({ pageData }: { pageData: PageRender
envelopeStatus,
currentEnvelopeItem,
fields,
signatures,
recipients,
getRecipientColorKey,
setRenderError,
overrideSettings,
} = useCurrentEnvelopeRender();
const signaturesByFieldId = useMemo(() => {
return new Map(signatures.map((signature) => [signature.fieldId, signature]));
}, [signatures]);
const { stage, pageLayer, konvaContainer, unscaledViewport } = usePageRenderer(
({ stage, pageLayer }) => {
createPageCanvas(stage, pageLayer);
@@ -80,6 +85,16 @@ export const EnvelopeGenericPageRenderer = ({ pageData }: { pageData: PageRender
const fieldTranslations = getClientSideFieldTranslations(i18n);
// Look up an inserted signature for this field. If we don't have one (e.g.
// the signatures haven't been loaded, or the field hasn't been signed yet)
// fall back to a placeholder so the field still renders something.
const insertedSignature = signaturesByFieldId.get(field.id);
const signature = insertedSignature ?? {
signatureImageAsBase64: '',
typedSignature: fieldTranslations.SIGNATURE,
};
renderField({
scale,
pageLayer: pageLayer.current,
@@ -91,10 +106,7 @@ export const EnvelopeGenericPageRenderer = ({ pageData }: { pageData: PageRender
positionX: Number(field.positionX),
positionY: Number(field.positionY),
fieldMeta: field.fieldMeta,
signature: {
signatureImageAsBase64: '',
typedSignature: fieldTranslations.SIGNATURE,
},
signature,
},
translations: fieldTranslations,
pageWidth: unscaledViewport.width,
@@ -150,7 +162,7 @@ export const EnvelopeGenericPageRenderer = ({ pageData }: { pageData: PageRender
});
pageLayer.current.batchDraw();
}, [localPageFields]);
}, [localPageFields, signaturesByFieldId]);
if (!currentEnvelopeItem) {
return null;
@@ -152,7 +152,8 @@ export const DocumentsTableActionDropdown = ({
<EnvelopeDownloadDialog
envelopeId={row.envelopeId}
envelopeStatus={row.status}
token={recipient?.token}
isLegacy={row.internalVersion === 1}
token={canManageDocument ? undefined : recipient?.token}
trigger={
<DropdownMenuItem asChild onSelect={(e) => e.preventDefault()}>
<div>
@@ -1,14 +1,10 @@
import { useState } from 'react';
import { Trans } from '@lingui/react/macro';
import {
DocumentStatus,
EnvelopeType,
type Recipient,
type TemplateDirectLink,
} from '@prisma/client';
import { DocumentStatus, EnvelopeType, type TemplateDirectLink } from '@prisma/client';
import {
Copy,
Download,
Edit,
FolderIcon,
MoreHorizontal,
@@ -30,6 +26,7 @@ import {
} from '@documenso/ui/primitives/dropdown-menu';
import { EnvelopeDeleteDialog } from '../dialogs/envelope-delete-dialog';
import { EnvelopeDownloadDialog } from '../dialogs/envelope-download-dialog';
import { EnvelopeDuplicateDialog } from '../dialogs/envelope-duplicate-dialog';
import { EnvelopeRenameDialog } from '../dialogs/envelope-rename-dialog';
import { TemplateBulkSendDialog } from '../dialogs/template-bulk-send-dialog';
@@ -77,87 +74,94 @@ export const TemplatesTableActionDropdown = ({
<DropdownMenuContent className="w-52" align="start" forceMount>
<DropdownMenuLabel>Action</DropdownMenuLabel>
<DropdownMenuItem disabled={!canMutate} asChild>
<Link to={formatPath}>
<Edit className="mr-2 h-4 w-4" />
<Trans>Edit</Trans>
</Link>
</DropdownMenuItem>
{canMutate && (
<DropdownMenuItem onClick={() => setRenameDialogOpen(true)}>
<Pencil className="mr-2 h-4 w-4" />
<Trans>Rename</Trans>
</DropdownMenuItem>
)}
{canMutate && (
<EnvelopeDuplicateDialog
envelopeId={row.envelopeId}
envelopeType={EnvelopeType.TEMPLATE}
trigger={
<DropdownMenuItem asChild onSelect={(e) => e.preventDefault()}>
<div>
<Copy className="mr-2 h-4 w-4" />
<Trans>Duplicate</Trans>
</div>
</DropdownMenuItem>
}
/>
)}
{canMutate && (
<TemplateDirectLinkDialog
templateId={row.id}
recipients={row.recipients}
directLink={row.directLink}
trigger={
<div
data-testid="template-direct-link"
className="relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground"
>
<Share2Icon className="mr-2 h-4 w-4" />
<Trans>Direct link</Trans>
<EnvelopeDownloadDialog
envelopeId={row.envelopeId}
envelopeStatus={DocumentStatus.DRAFT}
trigger={
<DropdownMenuItem asChild onSelect={(e) => e.preventDefault()}>
<div>
<Download className="mr-2 h-4 w-4" />
<Trans>Download</Trans>
</div>
}
/>
)}
<DropdownMenuItem disabled={!canMutate} onClick={() => setMoveToFolderDialogOpen(true)}>
<FolderIcon className="mr-2 h-4 w-4" />
<Trans>Move to Folder</Trans>
</DropdownMenuItem>
</DropdownMenuItem>
}
/>
{canMutate && (
<TemplateBulkSendDialog
templateId={row.id}
recipients={row.recipients}
trigger={
<div className="relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground">
<Upload className="mr-2 h-4 w-4" />
<Trans>Bulk Send via CSV</Trans>
</div>
}
/>
)}
<>
<DropdownMenuItem asChild>
<Link to={formatPath}>
<Edit className="mr-2 h-4 w-4" />
<Trans>Edit</Trans>
</Link>
</DropdownMenuItem>
{canMutate && (
<EnvelopeDeleteDialog
id={row.envelopeId}
type={EnvelopeType.TEMPLATE}
status={DocumentStatus.DRAFT}
title={row.title}
canManageDocument={canMutate}
onDelete={onDelete}
trigger={
<DropdownMenuItem asChild onSelect={(e) => e.preventDefault()}>
<div>
<Trash2 className="mr-2 h-4 w-4" />
<Trans>Delete</Trans>
<DropdownMenuItem onClick={() => setRenameDialogOpen(true)}>
<Pencil className="mr-2 h-4 w-4" />
<Trans>Rename</Trans>
</DropdownMenuItem>
<EnvelopeDuplicateDialog
envelopeId={row.envelopeId}
envelopeType={EnvelopeType.TEMPLATE}
trigger={
<DropdownMenuItem asChild onSelect={(e) => e.preventDefault()}>
<div>
<Copy className="mr-2 h-4 w-4" />
<Trans>Duplicate</Trans>
</div>
</DropdownMenuItem>
}
/>
<TemplateDirectLinkDialog
templateId={row.id}
recipients={row.recipients}
directLink={row.directLink}
trigger={
<div
data-testid="template-direct-link"
className="relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground"
>
<Share2Icon className="mr-2 h-4 w-4" />
<Trans>Direct link</Trans>
</div>
</DropdownMenuItem>
}
/>
}
/>
<DropdownMenuItem onClick={() => setMoveToFolderDialogOpen(true)}>
<FolderIcon className="mr-2 h-4 w-4" />
<Trans>Move to Folder</Trans>
</DropdownMenuItem>
<TemplateBulkSendDialog
templateId={row.id}
recipients={row.recipients}
trigger={
<div className="relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground">
<Upload className="mr-2 h-4 w-4" />
<Trans>Bulk Send via CSV</Trans>
</div>
}
/>
<EnvelopeDeleteDialog
id={row.envelopeId}
type={EnvelopeType.TEMPLATE}
status={DocumentStatus.DRAFT}
title={row.title}
canManageDocument={canMutate}
onDelete={onDelete}
trigger={
<DropdownMenuItem asChild onSelect={(e) => e.preventDefault()}>
<div>
<Trash2 className="mr-2 h-4 w-4" />
<Trans>Delete</Trans>
</div>
</DropdownMenuItem>
}
/>
</>
)}
</DropdownMenuContent>
+9 -2
View File
@@ -20,7 +20,7 @@ export default async function handleRequest(
responseStatusCode: number,
responseHeaders: Headers,
routerContext: EntryContext,
_loadContext: AppLoadContext,
loadContext: AppLoadContext,
) {
let language = await langCookie.parse(request.headers.get('cookie') ?? '');
@@ -30,6 +30,12 @@ export default async function handleRequest(
await dynamicActivate(language);
// Threaded into ServerRouter so React Router applies the nonce to the
// scripts it injects (route manifest, hydration data, module preloads).
// The same nonce is also exposed to the React tree via the root loader so
// our own inline scripts/styles can carry it.
const nonce = loadContext.nonce || undefined;
return new Promise((resolve, reject) => {
let shellRendered = false;
const userAgent = request.headers.get('user-agent');
@@ -41,9 +47,10 @@ export default async function handleRequest(
const { pipe, abort } = renderToPipeableStream(
<I18nProvider i18n={i18n}>
<ServerRouter context={routerContext} url={request.url} />
<ServerRouter context={routerContext} url={request.url} nonce={nonce} />
</I18nProvider>,
{
nonce,
[readyOption]() {
shellRendered = true;
const body = new PassThrough();
+21 -8
View File
@@ -27,6 +27,7 @@ import { GenericErrorLayout } from './components/general/generic-error-layout';
import { langCookie } from './storage/lang-cookie.server';
import { themeSessionResolver } from './storage/theme-session.server';
import { appMetaTags } from './utils/meta';
import { nonce } from './utils/nonce';
export const links: Route.LinksFunction = () => [{ rel: 'stylesheet', href: stylesheet }];
@@ -41,7 +42,7 @@ export function meta() {
*/
export const shouldRevalidate = () => false;
export async function loader({ request }: Route.LoaderArgs) {
export async function loader({ context, request }: Route.LoaderArgs) {
const session = await getOptionalSession(request);
const { getTheme } = await themeSessionResolver(request);
@@ -67,6 +68,10 @@ export async function loader({ request }: Route.LoaderArgs) {
lang,
theme: getTheme(),
disableAnimations,
// Surface the per-request CSP nonce produced by `securityHeadersMiddleware` so all
// SSR-rendered <script>/<style> elements in this layout (and child
// routes that need it) can carry the matching nonce attribute.
nonce: context.nonce,
session: session.isAuthenticated
? {
user: session.user,
@@ -95,8 +100,14 @@ export function Layout({ children }: { children: React.ReactNode }) {
}
export function LayoutContent({ children }: { children: React.ReactNode }) {
const { publicEnv, session, lang, disableAnimations, ...data } =
useLoaderData<typeof loader>() || {};
const {
publicEnv,
session,
lang,
disableAnimations,
nonce: cspNonce,
...data
} = useLoaderData<typeof loader>() || {};
const [theme] = useTheme();
@@ -111,12 +122,13 @@ export function LayoutContent({ children }: { children: React.ReactNode }) {
<link rel="manifest" href="/site.webmanifest" />
<meta name="google" content="notranslate" />
<Meta />
<Links />
<Links nonce={nonce(cspNonce)} />
<meta name="google" content="notranslate" />
<PreventFlashOnWrongTheme ssrTheme={Boolean(data.theme)} />
<PreventFlashOnWrongTheme ssrTheme={Boolean(data.theme)} nonce={nonce(cspNonce)} />
{disableAnimations && (
<style
nonce={nonce(cspNonce)}
dangerouslySetInnerHTML={{
__html: `*, *::before, *::after { animation: none !important; transition: none !important; }`,
}}
@@ -124,7 +136,7 @@ export function LayoutContent({ children }: { children: React.ReactNode }) {
)}
{/* Fix: https://stackoverflow.com/questions/21147149/flash-of-unstyled-content-fouc-in-firefox-only-is-ff-slow-renderer */}
<script>0</script>
<script nonce={nonce(cspNonce)}>0</script>
</head>
<body>
{/* Global license banner currently disabled. Need to wait until after a few releases. */}
@@ -152,13 +164,14 @@ export function LayoutContent({ children }: { children: React.ReactNode }) {
</NuqsAdapter>
<script
nonce={nonce(cspNonce)}
dangerouslySetInnerHTML={{
__html: `window.__ENV__ = ${JSON.stringify(publicEnv)}`,
}}
/>
<ScrollRestoration />
<Scripts />
<ScrollRestoration nonce={nonce(cspNonce)} />
<Scripts nonce={nonce(cspNonce)} />
</body>
</html>
);
@@ -51,6 +51,7 @@ const ZProviderFormSchema = ZUpdateOrganisationAuthenticationPortalRequestSchema
clientId: true,
autoProvisionUsers: true,
defaultOrganisationRole: true,
allowPersonalOrganisations: true,
})
.extend({
clientSecret: z.string().nullable(),
@@ -120,6 +121,7 @@ const SSOProviderForm = ({ authenticationPortal }: SSOProviderFormProps) => {
autoProvisionUsers: authenticationPortal.autoProvisionUsers,
defaultOrganisationRole: authenticationPortal.defaultOrganisationRole,
allowedDomains: authenticationPortal.allowedDomains.join(' '),
allowPersonalOrganisations: authenticationPortal.allowPersonalOrganisations,
},
});
@@ -161,6 +163,7 @@ const SSOProviderForm = ({ authenticationPortal }: SSOProviderFormProps) => {
autoProvisionUsers: values.autoProvisionUsers,
defaultOrganisationRole: values.defaultOrganisationRole,
allowedDomains: values.allowedDomains.split(' ').filter(Boolean),
allowPersonalOrganisations: values.allowPersonalOrganisations,
},
});
@@ -390,6 +393,30 @@ const SSOProviderForm = ({ authenticationPortal }: SSOProviderFormProps) => {
)}
/> */}
<FormField
control={form.control}
name="allowPersonalOrganisations"
render={({ field }) => (
<FormItem className="flex items-center justify-between rounded-lg border px-4 py-3">
<div className="space-y-0.5">
<FormLabel>
<Trans>Allow Personal Organisations</Trans>
</FormLabel>
<p className="text-sm text-muted-foreground">
<Trans>
When enabled, users signing in via SSO for the first time will also receive
their own personal organisation.
</Trans>
</p>
</div>
<FormControl>
<Switch checked={field.value} onCheckedChange={field.onChange} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="enabled"
@@ -62,6 +62,17 @@ export default function DocumentPage({ params }: Route.ComponentProps) {
},
);
const { data: fieldSignatures } = trpc.envelope.field.getSignatures.useQuery(
{
envelopeId: params.id,
},
{
...DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
enabled:
envelope && envelope.internalVersion === 2 && envelope.status === DocumentStatus.PENDING,
},
);
if (isLoadingEnvelope) {
return (
<div className="flex w-screen flex-col items-center justify-center gap-2 py-64 text-foreground">
@@ -108,12 +119,9 @@ export default function DocumentPage({ params }: Route.ComponentProps) {
<Trans>Documents</Trans>
</Link>
<div className="flex flex-row justify-between truncate">
<div>
<h1
className="mt-4 block max-w-[20rem] truncate text-2xl font-semibold md:max-w-[30rem] md:text-3xl"
title={envelope.title}
>
<div className="flex flex-row justify-between gap-4">
<div className="min-w-0">
<h1 className="mt-4 block text-2xl font-semibold md:text-3xl" title={envelope.title}>
{envelope.title}
</h1>
@@ -162,6 +170,7 @@ export default function DocumentPage({ params }: Route.ComponentProps) {
envelopeItems={envelope.envelopeItems}
token={undefined}
fields={envelope.fields}
signatures={fieldSignatures}
recipients={envelope.recipients}
overrideSettings={{
showRecipientSigningStatus: true,
@@ -121,44 +121,23 @@ export default function TemplatePage({ params }: Route.ComponentProps) {
return (
<div className="mx-auto -mt-4 w-full max-w-screen-xl px-4 md:px-8">
<Link to={templateRootPath} className="flex items-center text-documenso-700 hover:opacity-80">
<ChevronLeft className="mr-2 inline-block h-5 w-5" />
<Trans>Templates</Trans>
</Link>
<div className="flex flex-row justify-between">
<Link
to={templateRootPath}
className="flex items-center text-documenso-700 hover:opacity-80"
>
<ChevronLeft className="mr-2 inline-block h-5 w-5" />
<Trans>Templates</Trans>
</Link>
<div className="flex flex-row justify-between truncate">
<div>
<h1
className="mt-4 block max-w-[20rem] truncate text-2xl font-semibold md:max-w-[30rem] md:text-3xl"
title={envelope.title}
>
{envelope.title}
</h1>
<div className="mt-2.5 flex items-center">
<TemplateType
inheritColor
className="text-muted-foreground"
type={envelope.templateType}
/>
{envelope.directLink?.token && (
<TemplateDirectLinkBadge
className="ml-4"
token={envelope.directLink.token}
enabled={envelope.directLink.enabled}
/>
)}
</div>
</div>
<div className="mt-2 flex flex-row space-x-4 sm:mt-0 sm:self-end">
<div className="flex shrink-0 flex-row space-x-4">
{isOwnTeamTemplate && (
<>
<TemplateDirectLinkDialog
templateId={mapSecondaryIdToTemplateId(envelope.secondaryId)}
directLink={envelope.directLink}
recipients={envelope.recipients}
triggerSizeVariant="sm"
/>
<TemplateBulkSendDialog
@@ -166,7 +145,7 @@ export default function TemplatePage({ params }: Route.ComponentProps) {
recipients={envelope.recipients}
/>
<Button className="w-full" asChild>
<Button asChild size="sm">
<Link to={`${templateRootPath}/${envelope.id}/edit`}>
<LucideEdit className="mr-1.5 h-3.5 w-3.5" />
<Trans>Edit Template</Trans>
@@ -177,6 +156,28 @@ export default function TemplatePage({ params }: Route.ComponentProps) {
</div>
</div>
<div className="min-w-0">
<h1 className="mt-4 block text-2xl font-semibold md:text-3xl" title={envelope.title}>
{envelope.title}
</h1>
<div className="mt-2.5 flex items-center">
<TemplateType
inheritColor
className="text-muted-foreground"
type={envelope.templateType}
/>
{envelope.directLink?.token && (
<TemplateDirectLinkBadge
className="ml-4"
token={envelope.directLink.token}
enabled={envelope.directLink.enabled}
/>
)}
</div>
</div>
<div className="mt-6 grid w-full grid-cols-12 gap-8">
{envelope.internalVersion === 2 ? (
<div className="relative col-span-12 lg:col-span-6 xl:col-span-7">
@@ -247,20 +248,18 @@ export default function TemplatePage({ params }: Route.ComponentProps) {
<Trans>Template</Trans>
</h3>
{isOwnTeamTemplate && (
<div>
<TemplatesTableActionDropdown
row={{
...envelope,
id: mapSecondaryIdToTemplateId(envelope.secondaryId),
envelopeId: envelope.id,
}}
teamId={team?.id}
templateRootPath={templateRootPath}
onDelete={async () => navigate(templateRootPath)}
/>
</div>
)}
<div>
<TemplatesTableActionDropdown
row={{
...envelope,
id: mapSecondaryIdToTemplateId(envelope.secondaryId),
envelopeId: envelope.id,
}}
teamId={team?.id}
templateRootPath={templateRootPath}
onDelete={async () => navigate(templateRootPath)}
/>
</div>
</div>
<p className="mt-2 px-4 text-sm text-muted-foreground">
+8 -13
View File
@@ -17,19 +17,14 @@ import { EmbedRecipientExpired } from '~/components/embed/embed-recipient-expire
import type { Route } from './+types/_layout';
// Todo: (RR7) Test
export function headers({ loaderHeaders }: Route.HeadersArgs) {
const origin = loaderHeaders.get('Origin') ?? '*';
// Allow third parties to iframe the document.
return {
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Origin': origin,
'Content-Security-Policy': `frame-ancestors ${origin}`,
'Referrer-Policy': 'strict-origin-when-cross-origin',
'X-Content-Type-Options': 'nosniff',
};
}
// Note: CSP (`frame-ancestors *`), `Referrer-Policy`, and
// `X-Content-Type-Options` are now emitted globally by
// `securityHeadersMiddleware` for any path under `/embed`. See
// `apps/remix/server/security-headers.ts`.
//
// The previous `Access-Control-Allow-*` headers here only ever applied to
// HTML page renders, where CORS preflight does not apply, so they were a
// no-op and have been dropped along with the rest of `headers()`.
export function loader() {
// SSR env variables.
@@ -298,6 +298,7 @@ const EnvelopeCreatePage = ({ embedAuthoringOptions }: EnvelopeCreatePageProps)
mode: 'create' as const,
onCreate: async (envelope: Omit<TEditorEnvelope, 'id'>) => createEmbeddedEnvelope(envelope),
customBrandingLogo: Boolean(teamSettings.brandingEnabled && teamSettings.brandingLogo),
user: embedAuthoringOptions.user,
}),
[token],
);
@@ -314,6 +314,7 @@ const EnvelopeEditPage = ({ embedAuthoringOptions }: EnvelopeEditPageProps) => {
mode: 'edit' as const,
onUpdate: async (envelope: TEditorEnvelope) => updateEmbeddedEnvelope(envelope),
brandingLogo,
user: embedAuthoringOptions.user,
}),
[token],
);
+22
View File
@@ -0,0 +1,22 @@
/**
* Returns the supplied CSP nonce only when rendering on the server.
*
* Browsers strip the `nonce` attribute from `getAttribute()` after CSP
* processing for security (so reflected XSS can't read the nonce back out
* of the DOM), but React 18's hydration reads via `getAttribute` and warns
* about a mismatch when the JSX prop is non-empty:
*
* Prop `nonce` did not match. Server: "" Client: "abc..."
*
* Returning `undefined` on the client makes React treat the prop as
* "no attribute" — `shouldRemoveAttribute` short-circuits for nullish
* values (see `react-dom/cjs/react-dom.development.js` `shouldRemoveAttribute`),
* and the hydration prop-diff branch is skipped entirely.
*
* The nonce only matters at the moment the script/style is parsed by the
* browser. After that it's an inert attribute, so dropping it on the
* client has no functional impact. Subsequent dynamically-injected
* scripts inherit trust via `'strict-dynamic'`.
*/
export const nonce = (value: string | undefined): string | undefined =>
typeof window === 'undefined' ? value : '';
+1 -1
View File
@@ -106,5 +106,5 @@
"vite-plugin-babel-macros": "^1.0.6",
"vite-tsconfig-paths": "^5.1.4"
},
"version": "2.9.1"
"version": "2.10.1"
}
+34 -9
View File
@@ -13,6 +13,7 @@ import { handleEnvelopeItemFileRequest } from '../files/files.helpers';
import {
ZDownloadDocumentRequestParamsSchema,
ZDownloadEnvelopeItemRequestParamsSchema,
ZDownloadEnvelopeItemRequestQuerySchema,
} from './download.types';
export const downloadRoute = new Hono<HonoEnv>()
@@ -23,11 +24,13 @@ export const downloadRoute = new Hono<HonoEnv>()
.get(
'/envelope/item/:envelopeItemId/download',
sValidator('param', ZDownloadEnvelopeItemRequestParamsSchema),
sValidator('query', ZDownloadEnvelopeItemRequestQuerySchema),
async (c) => {
const logger = c.get('logger');
try {
const { envelopeItemId, version } = c.req.valid('param');
const { envelopeItemId } = c.req.valid('param');
const { version } = c.req.valid('query');
const authorizationHeader = c.req.header('authorization');
// Support for both "Authorization: Bearer api_xxx" and "Authorization: api_xxx"
@@ -65,7 +68,16 @@ export const downloadRoute = new Hono<HonoEnv>()
},
},
include: {
envelope: true,
envelope: {
include: {
recipients: {
select: {
role: true,
signingStatus: true,
},
},
},
},
documentData: true,
},
});
@@ -78,23 +90,36 @@ export const downloadRoute = new Hono<HonoEnv>()
return c.json({ error: 'Document data not found' }, 404);
}
return await handleEnvelopeItemFileRequest({
const baseOptions = {
title: envelopeItem.title,
status: envelopeItem.envelope.status,
documentData: envelopeItem.documentData,
version: version || 'signed',
isDownload: true,
context: c,
} as const;
if (version === 'pending') {
return await handleEnvelopeItemFileRequest({
...baseOptions,
version,
envelopeItemId: envelopeItem.id,
envelope: envelopeItem.envelope,
});
}
return await handleEnvelopeItemFileRequest({
...baseOptions,
version,
status: envelopeItem.envelope.status,
});
} catch (error) {
logger.error(error);
if (error instanceof AppError) {
if (error.code === AppErrorCode.UNAUTHORIZED) {
return c.json({ error: error.message }, 401);
}
const { status, body } = AppError.toRestAPIError(error);
return c.json({ error: error.message }, 400);
// Preserve the existing `{ error }` shape for backwards compatibility;
// `code` is added as a new field for callers that want to branch on it.
return c.json({ error: body.message, code: error.code }, status);
}
return c.json({ error: 'Internal server error' }, 500);
@@ -2,12 +2,15 @@ import { z } from 'zod';
export const ZDownloadEnvelopeItemRequestParamsSchema = z.object({
envelopeItemId: z.string().describe('The ID of the envelope item to download.'),
});
export const ZDownloadEnvelopeItemRequestQuerySchema = z.object({
version: z
.enum(['original', 'signed'])
.enum(['original', 'signed', 'pending'])
.optional()
.default('signed')
.describe(
'The version of the envelope item to download. "signed" returns the completed document with signatures, "original" returns the original uploaded document.',
'The version of the envelope item to download. "signed" returns the completed document with all signatures and the audit trail, "original" returns the original uploaded document, "pending" returns the original document with currently-inserted fields burned in (only valid while the envelope is in PENDING status; not a final executed document).',
),
});
@@ -15,6 +18,10 @@ export type TDownloadEnvelopeItemRequestParams = z.infer<
typeof ZDownloadEnvelopeItemRequestParamsSchema
>;
export type TDownloadEnvelopeItemRequestQuery = z.infer<
typeof ZDownloadEnvelopeItemRequestQuerySchema
>;
export const ZDownloadDocumentRequestParamsSchema = z.object({
documentId: z.coerce.number().describe('The ID of the document to download.'),
version: z
+167 -13
View File
@@ -2,12 +2,17 @@ import {
type DocumentDataType,
DocumentStatus,
type EnvelopeType,
type RecipientRole,
type SigningStatus,
type TemplateType,
} from '@prisma/client';
import { EnvelopeType as EnvelopeTypeEnum, TemplateType as TemplateTypeEnum } from '@prisma/client';
import contentDisposition from 'content-disposition';
import { type Context } from 'hono';
import { match } from 'ts-pattern';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { generatePartialSignedPdf } from '@documenso/lib/server-only/pdf/generate-partial-signed-pdf';
import { getTeamById } from '@documenso/lib/server-only/team/get-team';
import { sha256 } from '@documenso/lib/universal/crypto';
import { getFileServerSide } from '@documenso/lib/universal/upload/get-file.server';
@@ -15,30 +20,75 @@ import { prisma } from '@documenso/prisma';
import type { HonoEnv } from '../../router';
type HandleEnvelopeItemFileRequestOptions = {
title: string;
type DocumentDataInput = {
type: DocumentDataType;
data: string;
initialData: string;
};
type EnvelopeForPendingDownload = {
id: string;
status: DocumentStatus;
documentData: {
type: DocumentDataType;
data: string;
initialData: string;
};
version: 'signed' | 'original';
isDownload: boolean;
context: Context<HonoEnv>;
internalVersion: number;
recipients: Array<{
role: RecipientRole;
signingStatus: SigningStatus;
}>;
};
/**
* Helper function to handle envelope item file requests (both view and download)
* Options shape varies by `version`:
* - `signed` / `original`: serves stored bytes; only needs envelope `status` for cache headers.
* - `pending`: generates a fresh PDF with currently-inserted fields burned in; needs the
* full envelope (id, status, internalVersion, recipients) plus envelopeItemId to query fields.
*/
export const handleEnvelopeItemFileRequest = async ({
type HandleEnvelopeItemFileRequestOptions = {
title: string;
documentData: DocumentDataInput;
isDownload: boolean;
context: Context<HonoEnv>;
} & (
| {
version: 'signed' | 'original';
status: DocumentStatus;
}
| {
version: 'pending';
envelopeItemId: string;
envelope: EnvelopeForPendingDownload;
}
);
/**
* Single entry point for envelope item file requests (view and download).
*
* Dispatches on `version`:
* - `signed` / `original`: returns the stored PDF bytes as-is.
* - `pending`: generates an on-demand PDF with all currently-inserted fields burned in.
*/
export const handleEnvelopeItemFileRequest = async (
options: HandleEnvelopeItemFileRequestOptions,
) => {
if (options.version === 'pending') {
return handlePendingFileRequest(options);
}
return handleStaticFileRequest(options);
};
type StaticFileRequestOptions = Extract<
HandleEnvelopeItemFileRequestOptions,
{ version: 'signed' | 'original' }
>;
const handleStaticFileRequest = async ({
title,
status,
documentData,
version,
isDownload,
context: c,
}: HandleEnvelopeItemFileRequestOptions) => {
}: StaticFileRequestOptions) => {
const documentDataToUse = version === 'signed' ? documentData.data : documentData.initialData;
const etag = Buffer.from(sha256(documentDataToUse)).toString('hex');
@@ -88,6 +138,110 @@ export const handleEnvelopeItemFileRequest = async ({
return c.body(file);
};
type PendingFileRequestOptions = Extract<
HandleEnvelopeItemFileRequestOptions,
{ version: 'pending' }
>;
const handlePendingFileRequest = async ({
title,
envelopeItemId,
envelope,
documentData,
context: c,
}: PendingFileRequestOptions) => {
if (envelope.status !== DocumentStatus.PENDING) {
const errorCode = match(envelope.status)
.with(DocumentStatus.DRAFT, () => AppErrorCode.ENVELOPE_DRAFT)
.with(DocumentStatus.COMPLETED, () => AppErrorCode.ENVELOPE_COMPLETED)
.with(DocumentStatus.REJECTED, () => AppErrorCode.ENVELOPE_REJECTED)
.otherwise(() => AppErrorCode.INVALID_REQUEST);
throw new AppError(errorCode, {
message: `Envelope ${envelope.id} must be pending to download a partially signed PDF`,
statusCode: 400,
});
}
if (envelope.internalVersion !== 2) {
throw new AppError(AppErrorCode.ENVELOPE_LEGACY, {
message: `Envelope ${envelope.id} is a legacy envelope and does not support partially signed PDF downloads`,
statusCode: 400,
});
}
const fields = await prisma.field.findMany({
where: {
envelopeItemId,
inserted: true,
},
include: {
signature: true,
},
orderBy: {
id: 'asc',
},
});
const etag = Buffer.from(
sha256(
JSON.stringify({
envelopeStatus: envelope.status,
fields: fields.map((field) => ({
id: field.id,
customText: field.customText,
signatureId: field.signature?.id ?? null,
signatureCreated: field.signature?.created ?? null,
})),
}),
),
).toString('hex');
if (c.req.header('If-None-Match') === etag) {
c.header('ETag', etag);
c.header('Cache-Control', 'no-store, private');
return c.body(null, 304);
}
const file = await getFileServerSide({
type: documentData.type,
data: documentData.initialData,
}).catch((error) => {
console.error(error);
return null;
});
if (!file) {
return c.json({ error: 'File not found' }, 404);
}
const pdf = await generatePartialSignedPdf({
pdfData: file,
fields,
});
c.get('logger').info({
source: 'pendingPdfDownload',
envelopeId: envelope.id,
envelopeItemId,
insertedFieldCount: fields.length,
etag,
});
c.header('Content-Type', 'application/pdf');
c.header('Cache-Control', 'no-store, private');
c.header('ETag', etag);
const baseTitle = title.replace(/\.pdf$/i, '');
const filename = `${baseTitle}_pending.pdf`;
c.header('Content-Disposition', contentDisposition(filename));
return c.body(pdf);
};
type CheckEnvelopeFileAccessOptions = {
userId: number;
teamId: number;
+87 -52
View File
@@ -150,66 +150,101 @@ export const filesRoute = new Hono<HonoEnv>()
'/envelope/:envelopeId/envelopeItem/:envelopeItemId/download/:version?',
sValidator('param', ZGetEnvelopeItemFileDownloadRequestParamsSchema),
async (c) => {
const { envelopeId, envelopeItemId, version } = c.req.valid('param');
const logger = c.get('logger');
const session = await getOptionalSession(c);
try {
const { envelopeId, envelopeItemId, version } = c.req.valid('param');
if (!session.user) {
return c.json({ error: 'Unauthorized' }, 401);
}
const session = await getOptionalSession(c);
const envelope = await prisma.envelope.findFirst({
where: {
id: envelopeId,
},
include: {
envelopeItems: {
where: {
id: envelopeItemId,
if (!session.user) {
return c.json({ error: 'Unauthorized' }, 401);
}
const envelope = await prisma.envelope.findFirst({
where: {
id: envelopeId,
},
include: {
envelopeItems: {
where: {
id: envelopeItemId,
},
include: {
documentData: true,
},
},
include: {
documentData: true,
recipients: {
select: {
role: true,
signingStatus: true,
},
},
},
},
});
});
if (!envelope) {
return c.json({ error: 'Envelope not found' }, 404);
if (!envelope) {
return c.json({ error: 'Envelope not found' }, 404);
}
const [envelopeItem] = envelope.envelopeItems;
if (!envelopeItem) {
return c.json({ error: 'Envelope item not found' }, 404);
}
const hasDownloadAccess = await checkEnvelopeFileAccess({
userId: session.user.id,
teamId: envelope.teamId,
envelopeType: envelope.type,
templateType: envelope.templateType,
});
if (!hasDownloadAccess) {
return c.json(
{
error: 'User does not have access to the team that this envelope is associated with',
},
403,
);
}
if (!envelopeItem.documentData) {
return c.json({ error: 'Document data not found' }, 404);
}
const baseOptions = {
title: envelopeItem.title,
documentData: envelopeItem.documentData,
isDownload: true,
context: c,
} as const;
if (version === 'pending') {
return await handleEnvelopeItemFileRequest({
...baseOptions,
version,
envelopeItemId: envelopeItem.id,
envelope,
});
}
return await handleEnvelopeItemFileRequest({
...baseOptions,
version,
status: envelope.status,
});
} catch (error) {
logger.error(error);
if (error instanceof AppError) {
const { status, body } = AppError.toRestAPIError(error);
return c.json({ error: body.message, code: error.code }, status);
}
return c.json({ error: 'Internal server error' }, 500);
}
const [envelopeItem] = envelope.envelopeItems;
if (!envelopeItem) {
return c.json({ error: 'Envelope item not found' }, 404);
}
const hasDownloadAccess = await checkEnvelopeFileAccess({
userId: session.user.id,
teamId: envelope.teamId,
envelopeType: envelope.type,
templateType: envelope.templateType,
});
if (!hasDownloadAccess) {
return c.json(
{ error: 'User does not have access to the team that this envelope is associated with' },
403,
);
}
if (!envelopeItem.documentData) {
return c.json({ error: 'Document data not found' }, 404);
}
return await handleEnvelopeItemFileRequest({
title: envelopeItem.title,
status: envelope.status,
documentData: envelopeItem.documentData,
version,
isDownload: true,
context: c,
});
},
)
.get(
+1 -1
View File
@@ -56,7 +56,7 @@ export type TGetEnvelopeItemFileTokenRequestParams = z.infer<
export const ZGetEnvelopeItemFileDownloadRequestParamsSchema = z.object({
envelopeId: z.string().min(1),
envelopeItemId: z.string().min(1),
version: z.enum(['signed', 'original']).default('signed'),
version: z.enum(['signed', 'original', 'pending']).default('signed'),
});
export type TGetEnvelopeItemFileDownloadRequestParams = z.infer<
+33
View File
@@ -0,0 +1,33 @@
import { getContext } from 'hono/context-storage';
import type { AppLoadContext } from 'react-router';
import type { HonoEnv } from './router';
import { CSP_NONCE_KEY } from './security-headers';
/**
* Augment React Router's `AppLoadContext` so loaders, actions, and
* `entry.server` can access fields by name without casts.
*/
declare module 'react-router' {
interface AppLoadContext {
/**
* Per-request CSP nonce. Populated by `securityHeadersMiddleware` and surfaced here
* so it can be threaded into `<ServerRouter nonce>` and root loader
* data, which then feeds `<Scripts>`, `<Links>`, etc.
*/
nonce: string;
}
}
/**
* Builds the React Router `AppLoadContext` for both dev (vite plugin) and
* production (`hono-react-router-adapter/node`).
*
* The Hono context isn't passed directly by the adapter, so we read it via
* `hono/context-storage`, which is enabled in `server/router.ts`.
*/
export const getLoadContext = (): AppLoadContext => {
const nonce = getContext<HonoEnv>().var[CSP_NONCE_KEY] ?? '';
return { nonce };
};
+2 -1
View File
@@ -10,6 +10,7 @@ import { serve } from '@hono/node-server';
import { serveStatic } from '@hono/node-server/serve-static';
import handle from 'hono-react-router-adapter/node';
import { getLoadContext } from './hono/server/load-context.js';
import server from './hono/server/router.js';
import * as build from './index.js';
@@ -28,7 +29,7 @@ server.use(
}),
);
const handler = handle(build, server);
const handler = handle(build, server, { getLoadContext });
const port = parseInt(process.env.PORT || '3000', 10);
+16
View File
@@ -29,13 +29,20 @@ import { downloadRoute } from './api/download/download';
import { filesRoute } from './api/files/files';
import { type AppContext, appContext } from './context';
import { appMiddleware } from './middleware';
import { securityHeadersMiddleware } from './security-headers';
import { openApiTrpcServerHandler } from './trpc/hono-trpc-open-api';
import { reactRouterTrpcServer } from './trpc/hono-trpc-remix';
// Re-export so the rollup build (entry: server/router.ts) bundles
// load-context.ts. server/main.js imports getLoadContext from the rolled-up
// output to wire it into the React Router adapter.
export { getLoadContext } from './load-context';
export interface HonoEnv {
Variables: RequestIdVariables & {
context: AppContext;
logger: Logger;
cspNonce: string;
};
}
@@ -56,6 +63,15 @@ const fileRateLimitMiddleware = createRateLimitMiddleware(fileUploadRateLimit);
app.use(contextStorage());
app.use(appContext);
/**
* Emit response security headers (CSP with per-request nonce, plus
* Referrer-Policy and X-Content-Type-Options on embed routes). Must run
* after `contextStorage()` so the nonce is readable via `getContext()` from
* `getLoadContext`, and before the React Router handler so the response
* carries the header.
*/
app.use(securityHeadersMiddleware);
/**
* RR7 app middleware.
*/
+181
View File
@@ -0,0 +1,181 @@
import { createMiddleware } from 'hono/factory';
import type { HonoEnv } from './router';
/**
* Paths that never render HTML and therefore do not need security headers.
*
* Browsers ignore CSP and friends on non-document responses, so we skip
* them to keep API/manifest/asset responses clean.
*/
const NON_PAGE_PATH_REGEX = /^(\/api\/|\/ingest\/|\/__manifest|\/assets\/|\/apple-.*|\/favicon.*)/;
/**
* Embed routes serve our white-label embed UI. Customers iframe these from
* arbitrary origins, so `frame-ancestors` must be wildcard, and customer-
* supplied CSS is injected at runtime as `<style>` elements which means
* `style-src-elem` cannot be nonce-restricted on these routes.
*/
const EMBED_PATH_REGEX = /^\/embed(\/|\.data|$)/;
/**
* Non-`/embed` page routes that customers iframe directly, plus the auth
* pages reachable from inside an embed iframe during the
* reauth-as-different-account flow.
*
* Signing routes (`/sign/:token`, `/d/:token`):
* Some customer integrations embed these URLs directly (without going
* through `EmbedSignDocument`). Without `frame-ancestors *` here, those
* integrations break with a "refused to connect" iframe error.
*
* Auth routes (`/signin`, `/forgot-password`, `/check-email`,
* `/unverified-account`):
* `apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx`
* does `window.location.href = '/signin?...'` inside the iframe when the
* user needs to sign out and sign back in as a different account, and
* `<SignInForm>` links/navigates to `/forgot-password`, `/check-email`, and
* `/unverified-account` from there. Without `frame-ancestors *` on these
* routes, the customer's iframe gets blocked the moment the user clicks
* "Login" in the reauth dialog.
*
* These routes still get the strict nonced `script-src`/`style-src-elem`
* policy — only `frame-ancestors` is relaxed. The `(\/|\.data|$)` tail
* keeps `/sign` from matching `/signin`/`/signup` and `/d` from matching
* `/dashboard`.
*/
const FRAMEABLE_PATH_REGEX =
/^\/(signin|forgot-password|check-email|unverified-account|sign|d)(\/|\.data|$)/;
/**
* Hono context variable name where the per-request CSP nonce is stashed.
*
* Read by `getLoadContext` (server/load-context.ts) so the nonce can be
* threaded into React Router's `<ServerRouter nonce>` and surfaced in the
* root loader for use by `<Scripts>`, `<Links>`, etc.
*/
export const CSP_NONCE_KEY = 'cspNonce' as const;
const generateNonce = () => {
const buf = new Uint8Array(16);
crypto.getRandomValues(buf);
let binary = '';
for (let i = 0; i < buf.length; i++) {
binary += String.fromCharCode(buf[i]);
}
return btoa(binary);
};
type CspPathKind = 'embed' | 'frameable' | 'default';
const buildCspHeader = ({ nonce, kind }: { nonce: string; kind: CspPathKind }) => {
// `'self'` is included alongside `'strict-dynamic'` as a fallback for
// browsers that don't understand `'strict-dynamic'`. Modern browsers
// ignore `'self'` (and other host/scheme sources) when `'strict-dynamic'`
// is present.
const directives = [
`base-uri 'self'`,
`object-src 'none'`,
`form-action 'self'`,
`script-src 'self' 'nonce-${nonce}' 'strict-dynamic'`,
// PDF.js (apps/remix/app/components/general/pdf-viewer/pdf-viewer.tsx)
// creates a Web Worker via `new Worker(url)`. `'strict-dynamic'` does
// not reliably propagate to worker creation across browsers, and
// without `worker-src` the browser falls back to `script-src` which
// would block the worker. `blob:` covers libs that inline workers.
`worker-src 'self' blob:`,
// Inline `style=""` attributes cannot be nonced or hashed (CSP3 has no
// mechanism for it), and React inline styles, framer-motion, react-rnd,
// konva, etc. all rely on them. `'unsafe-inline'` for attributes is
// industry standard and does not weaken `style-src-elem`.
`style-src-attr 'unsafe-inline'`,
];
// Embeds inject customer-supplied CSS via runtime-created `<style>`
// elements (see apps/remix/app/utils/css-vars.ts). Nonce-stamping those
// would be brittle for white-label customers, so we accept
// `'unsafe-inline'` on the embed scope only. Frameable (auth/signing)
// pages do NOT load customer CSS and keep the strict nonced policy.
if (kind === 'embed') {
directives.push(`style-src-elem 'self' 'unsafe-inline'`);
} else {
directives.push(`style-src-elem 'self' 'nonce-${nonce}'`);
}
// Embed, signing, and auth routes are all reachable from inside a
// customer's iframe and therefore need `frame-ancestors *`. Every other
// page gets clickjacking protection.
if (kind === 'embed' || kind === 'frameable') {
directives.push(`frame-ancestors *`);
} else {
directives.push(`frame-ancestors 'self'`);
}
return directives.join('; ');
};
const classifyPath = (path: string): CspPathKind => {
if (EMBED_PATH_REGEX.test(path)) {
return 'embed';
}
if (FRAMEABLE_PATH_REGEX.test(path)) {
return 'frameable';
}
return 'default';
};
/**
* Owns response security headers for page responses:
* `Content-Security-Policy`, plus `Referrer-Policy` and
* `X-Content-Type-Options` on embed routes (preserved from the per-route
* `headers()` export this middleware replaces).
*
* Generates a per-request CSP nonce and stashes it on the Hono context so
* `getLoadContext` (server/load-context.ts) can thread it into React
* Router for `<ServerRouter nonce>` and `<Scripts nonce>` etc.
*
* Path-aware classification:
* - `embed` — wildcard `frame-ancestors`, `'unsafe-inline'`
* style-src-elem (white-label CSS injection), strict
* nonced script-src.
* - `frameable` — wildcard `frame-ancestors` only; needed because the
* embed reauth flow redirects the iframe to `/signin` etc,
* and because some customers iframe `/sign/:token` and
* `/d/:token` directly without using `EmbedSignDocument`.
* Strict nonced script-src and style-src-elem otherwise.
* - default — strict nonced script-src and style-src-elem,
* `frame-ancestors 'self'` for clickjacking protection.
*/
export const securityHeadersMiddleware = createMiddleware<HonoEnv>(async (c, next) => {
const nonce = generateNonce();
c.set(CSP_NONCE_KEY, nonce);
await next();
const path = c.req.path;
if (NON_PAGE_PATH_REGEX.test(path)) {
return;
}
const kind = classifyPath(path);
c.res.headers.set('Content-Security-Policy', buildCspHeader({ nonce, kind }));
// Preserved from the per-route `headers()` export in
// apps/remix/app/routes/embed+/_v0+/_layout.tsx, which has been removed.
if (kind === 'embed') {
if (!c.res.headers.has('Referrer-Policy')) {
c.res.headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
}
if (!c.res.headers.has('X-Content-Type-Options')) {
c.res.headers.set('X-Content-Type-Options', 'nosniff');
}
}
});
+4
View File
@@ -47,6 +47,10 @@ export default defineConfig({
tsconfigPaths(),
serverAdapter({
entry: 'server/router.ts',
getLoadContext: async () => {
const { getLoadContext } = await import('./server/load-context');
return getLoadContext();
},
exclude: [
// Spread the defaults but replace the /.css$/ rule so that Bull
// Board's static CSS at /api/jobs/board/static/** passes through to Hono.
+3 -3
View File
@@ -1,12 +1,12 @@
{
"name": "@documenso/root",
"version": "2.9.1",
"version": "2.10.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@documenso/root",
"version": "2.9.1",
"version": "2.10.1",
"hasInstallScript": true,
"workspaces": [
"apps/*",
@@ -407,7 +407,7 @@
},
"apps/remix": {
"name": "@documenso/remix",
"version": "2.9.1",
"version": "2.10.1",
"dependencies": {
"@cantoo/pdf-lib": "^2.5.3",
"@documenso/api": "*",
+1 -1
View File
@@ -5,7 +5,7 @@
"apps/*",
"packages/*"
],
"version": "2.9.1",
"version": "2.10.1",
"scripts": {
"postinstall": "patch-package",
"build": "turbo run build",
@@ -0,0 +1,251 @@
import { PDF } from '@libpdf/core';
import type { APIRequestContext } from '@playwright/test';
import { expect, test } from '@playwright/test';
import { DocumentStatus, FieldType, SigningStatus } from '@prisma/client';
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { getFileServerSide } from '@documenso/lib/universal/upload/get-file.server';
import { mapSecondaryIdToDocumentId } from '@documenso/lib/utils/envelope';
import { prisma } from '@documenso/prisma';
import { apiSeedDraftDocument, apiSeedPendingDocument } from '../../fixtures/api-seeds';
const WEBAPP_BASE_URL = NEXT_PUBLIC_WEBAPP_URL();
const API_BASE_URL = `${WEBAPP_BASE_URL}/api/v2-beta`;
const trpcMutation = async (
request: APIRequestContext,
procedure: string,
input: Record<string, unknown>,
) => {
const res = await request.post(`${WEBAPP_BASE_URL}/api/trpc/${procedure}`, {
headers: {
'content-type': 'application/json',
},
data: JSON.stringify({ json: input }),
});
expect(res.ok(), `${procedure} failed: ${await res.text()}`).toBeTruthy();
};
const getPdfBytes = async (response: Awaited<ReturnType<APIRequestContext['get']>>) => {
const body = await response.body();
expect(body.subarray(0, 5).toString()).toBe('%PDF-');
return new Uint8Array(body);
};
const signAndCompleteRecipient = async ({
request,
token,
documentId,
fieldId,
}: {
request: APIRequestContext;
token: string;
documentId: number;
fieldId: number;
}) => {
await trpcMutation(request, 'envelope.field.sign', {
token,
fieldId,
fieldValue: {
type: FieldType.SIGNATURE,
value: 'Signature',
},
});
await trpcMutation(request, 'recipient.completeDocumentWithToken', {
token,
documentId,
});
};
test.describe('API V2 partial signed PDF downloads', () => {
test('returns a PDF with inserted fields, supports ETag, and rejects after completion', async ({
request,
}) => {
const { envelope, token, distributeResult } = await apiSeedPendingDocument(request, {
recipients: [
{ email: 'partial-signer-1@test.documenso.com', name: 'Partial Signer 1' },
{ email: 'partial-signer-2@test.documenso.com', name: 'Partial Signer 2' },
],
fieldsPerRecipient: [
[{ type: FieldType.SIGNATURE, page: 1, positionX: 5, positionY: 5, width: 15, height: 5 }],
[
{
type: FieldType.SIGNATURE,
page: 1,
positionX: 5,
positionY: 15,
width: 15,
height: 5,
},
],
],
});
const [recipientOne, recipientTwo] = distributeResult.recipients;
const documentId = mapSecondaryIdToDocumentId(envelope.secondaryId);
const envelopeItem = envelope.envelopeItems[0];
const recipientOneField = envelope.fields.find(
(field) => field.recipientId === recipientOne.id && field.type === FieldType.SIGNATURE,
);
const recipientTwoField = envelope.fields.find(
(field) => field.recipientId === recipientTwo.id && field.type === FieldType.SIGNATURE,
);
if (!recipientOneField || !recipientTwoField) {
throw new Error('Expected signature fields not found');
}
await signAndCompleteRecipient({
request,
token: recipientOne.token,
documentId,
fieldId: recipientOneField.id,
});
await expect(async () => {
const dbEnvelope = await prisma.envelope.findUniqueOrThrow({
where: {
id: envelope.id,
},
include: {
recipients: true,
},
});
expect(dbEnvelope.status).toBe(DocumentStatus.PENDING);
expect(
dbEnvelope.recipients.find((recipient) => recipient.id === recipientOne.id)?.signingStatus,
).toBe(SigningStatus.SIGNED);
}).toPass();
const downloadUrl = `${API_BASE_URL}/envelope/item/${envelopeItem.id}/download?version=pending`;
const pendingResponse = await request.get(downloadUrl, {
headers: {
Authorization: `Bearer ${token}`,
},
});
expect(pendingResponse.status()).toBe(200);
expect(pendingResponse.headers()['content-type']).toContain('application/pdf');
expect(pendingResponse.headers()['cache-control']).toBe('no-store, private');
expect(pendingResponse.headers()['content-disposition']).toContain('_pending.pdf');
const etag = pendingResponse.headers().etag;
expect(etag).toBeTruthy();
const pendingPdfBytes = await getPdfBytes(pendingResponse);
const pendingPdf = await PDF.load(pendingPdfBytes);
const originalEnvelopeItem = await prisma.envelopeItem.findUniqueOrThrow({
where: {
id: envelopeItem.id,
},
include: {
documentData: true,
},
});
const originalPdfBytes = await getFileServerSide({
type: originalEnvelopeItem.documentData.type,
data: originalEnvelopeItem.documentData.initialData,
});
const originalPdf = await PDF.load(new Uint8Array(originalPdfBytes));
// Pending PDF should have the same page count as the original (no cert/audit pages).
expect(pendingPdf.getPageCount()).toBe(originalPdf.getPageCount());
const cachedResponse = await request.get(downloadUrl, {
headers: {
Authorization: `Bearer ${token}`,
'If-None-Match': etag,
},
});
expect(cachedResponse.status()).toBe(304);
await signAndCompleteRecipient({
request,
token: recipientTwo.token,
documentId,
fieldId: recipientTwoField.id,
});
await expect(async () => {
const dbEnvelope = await prisma.envelope.findUniqueOrThrow({
where: {
id: envelope.id,
},
});
expect(dbEnvelope.status).toBe(DocumentStatus.COMPLETED);
}).toPass({ timeout: 15_000 });
const completedResponse = await request.get(downloadUrl, {
headers: {
Authorization: `Bearer ${token}`,
},
});
const completedError = await completedResponse.json();
expect(completedResponse.status()).toBe(400);
expect(completedError.code).toBe('ENVELOPE_COMPLETED');
const signedResponse = await request.get(
`${API_BASE_URL}/envelope/item/${envelopeItem.id}/download?version=signed`,
{
headers: {
Authorization: `Bearer ${token}`,
},
},
);
expect(signedResponse.status()).toBe(200);
await getPdfBytes(signedResponse);
});
test('rejects draft and legacy pending envelopes', async ({ request }) => {
const draft = await apiSeedDraftDocument(request, {
recipients: [{ email: 'partial-draft@test.documenso.com', name: 'Draft Signer' }],
});
const draftResponse = await request.get(
`${API_BASE_URL}/envelope/item/${draft.envelope.envelopeItems[0].id}/download?version=pending`,
{
headers: {
Authorization: `Bearer ${draft.token}`,
},
},
);
const draftError = await draftResponse.json();
expect(draftResponse.status()).toBe(400);
expect(draftError.code).toBe('ENVELOPE_DRAFT');
const legacy = await apiSeedPendingDocument(request);
await prisma.envelope.update({
where: {
id: legacy.envelope.id,
},
data: {
internalVersion: 1,
},
});
const legacyResponse = await request.get(
`${API_BASE_URL}/envelope/item/${legacy.envelope.envelopeItems[0].id}/download?version=pending`,
{
headers: {
Authorization: `Bearer ${legacy.token}`,
},
},
);
const legacyError = await legacyResponse.json();
expect(legacyResponse.status()).toBe(400);
expect(legacyError.code).toBe('ENVELOPE_LEGACY');
});
});
@@ -0,0 +1,172 @@
import { type APIRequestContext, expect, test } from '@playwright/test';
import { FieldType, SigningStatus } from '@prisma/client';
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { prisma } from '@documenso/prisma';
import { apiSeedPendingDocument } from '../fixtures/api-seeds';
const WEBAPP_BASE_URL = NEXT_PUBLIC_WEBAPP_URL();
type SeededEnvelopes = {
assistantToken: string;
otherEnvelopeFieldId: number;
};
/**
* Seeds two unrelated pending envelopes:
* - Envelope A has an ASSISTANT (with a token) plus a SIGNER.
* - Envelope B is owned by a different user and has a SIGNER with a TEXT field.
*
* Returns the assistant's token from envelope A and the TEXT field id from
* envelope B so callers can exercise signing routes across envelopes.
*/
const seedTwoPendingEnvelopes = async (request: APIRequestContext): Promise<SeededEnvelopes> => {
const envelopeA = await apiSeedPendingDocument(request, {
title: '[TEST] Envelope A',
recipients: [
{
email: `assistant-${Date.now()}@documenso.com`,
name: 'Assistant',
role: 'ASSISTANT',
signingOrder: 1,
},
{
email: `signer-a-${Date.now()}@documenso.com`,
name: 'Signer A',
role: 'SIGNER',
signingOrder: 2,
},
],
fieldsPerRecipient: [
[],
// SIGNER needs a SIGNATURE field so distribution succeeds.
[{ type: FieldType.SIGNATURE, page: 1, positionX: 5, positionY: 5, width: 5, height: 5 }],
],
});
const assistant = envelopeA.distributeResult.recipients.find((r) => r.role === 'ASSISTANT');
if (!assistant) {
throw new Error('Assistant recipient not found in envelope A');
}
const envelopeB = await apiSeedPendingDocument(request, {
title: '[TEST] Envelope B',
recipients: [
{
email: `signer-b-${Date.now()}@documenso.com`,
name: 'Signer B',
role: 'SIGNER',
signingOrder: 1,
},
],
// A TEXT field is used as the cross-envelope target. The V2 route has a
// separate guard that blocks assistants from signing SIGNATURE fields,
// which would mask whether the recipient lookup itself was scoped.
fieldsPerRecipient: [
[
{ type: FieldType.SIGNATURE, page: 1, positionX: 5, positionY: 5, width: 5, height: 5 },
{ type: FieldType.TEXT, page: 1, positionX: 5, positionY: 15, width: 5, height: 5 },
],
],
});
const otherEnvelope = await prisma.envelope.findUniqueOrThrow({
where: { id: envelopeB.envelope.id },
include: { fields: true },
});
const textField = otherEnvelope.fields.find((f) => f.type === FieldType.TEXT);
if (!textField) {
throw new Error('TEXT field not found in envelope B');
}
return {
assistantToken: assistant.token,
otherEnvelopeFieldId: textField.id,
};
};
const trpcMutation = async (
request: APIRequestContext,
procedure: string,
input: Record<string, unknown>,
) => {
return await request.post(`${WEBAPP_BASE_URL}/api/trpc/${procedure}`, {
headers: { 'content-type': 'application/json' },
data: JSON.stringify({ json: input }),
});
};
test.describe('[ASSISTANT_SIGNING_AUTH]: cross-envelope field access', () => {
test('envelope.field.sign (V2) rejects fieldId from another envelope', async ({ request }) => {
const { assistantToken, otherEnvelopeFieldId } = await seedTwoPendingEnvelopes(request);
const res = await trpcMutation(request, 'envelope.field.sign', {
token: assistantToken,
fieldId: otherEnvelopeFieldId,
fieldValue: { type: FieldType.TEXT, value: 'TEXT' },
});
expect(res.ok()).toBeFalsy();
const fieldAfter = await prisma.field.findUniqueOrThrow({
where: { id: otherEnvelopeFieldId },
});
expect(fieldAfter.inserted).toBe(false);
expect(fieldAfter.customText).toBe('');
});
test('field.signFieldWithToken (V1) rejects fieldId from another envelope', async ({
request,
}) => {
const { assistantToken, otherEnvelopeFieldId } = await seedTwoPendingEnvelopes(request);
const res = await trpcMutation(request, 'field.signFieldWithToken', {
token: assistantToken,
fieldId: otherEnvelopeFieldId,
value: 'TEXT',
isBase64: false,
});
expect(res.ok()).toBeFalsy();
const fieldAfter = await prisma.field.findUniqueOrThrow({
where: { id: otherEnvelopeFieldId },
});
expect(fieldAfter.inserted).toBe(false);
expect(fieldAfter.customText).toBe('');
});
test('field.removeSignedFieldWithToken (V1) rejects fieldId from another envelope', async ({
request,
}) => {
const { assistantToken, otherEnvelopeFieldId } = await seedTwoPendingEnvelopes(request);
// Pre-insert the field so a successful (incorrect) uninsert is detectable.
await prisma.field.update({
where: { id: otherEnvelopeFieldId },
data: { inserted: true, customText: 'pre-existing-value' },
});
const res = await trpcMutation(request, 'field.removeSignedFieldWithToken', {
token: assistantToken,
fieldId: otherEnvelopeFieldId,
});
expect(res.ok()).toBeFalsy();
const fieldAfter = await prisma.field.findUniqueOrThrow({
where: { id: otherEnvelopeFieldId },
include: { recipient: true },
});
expect(fieldAfter.inserted).toBe(true);
expect(fieldAfter.customText).toBe('pre-existing-value');
expect(fieldAfter.recipient.signingStatus).toBe(SigningStatus.NOT_SIGNED);
});
});
@@ -551,3 +551,144 @@ test.describe('Organisation Templates - Adversarial', () => {
expect(titles).not.toContain(orgTemplate.title);
});
});
// ─── API: envelope.item.getManyByToken (org template fallback) ───────────────
test.describe('Organisation Templates - envelope.item.getManyByToken API', () => {
test('should allow a sibling team member to fetch envelope items for an org template', async ({
page,
}) => {
const { memberB, teamB, orgTemplate } = await seedOrgTemplateScenario();
await apiSignin({ page, email: memberB.email });
const { res, json } = await trpcQuery(
page,
'envelope.item.getManyByToken',
{ envelopeId: orgTemplate.id, access: { type: 'user' } },
teamB.id,
);
expect(res.ok()).toBeTruthy();
const items = json.result.data.json.data;
expect(Array.isArray(items)).toBe(true);
expect(items.length).toBeGreaterThan(0);
expect(items[0].envelopeId).toBe(orgTemplate.id);
});
test('should allow the owning team member to fetch envelope items (own-team path)', async ({
page,
}) => {
const { ownerA, teamA, orgTemplate } = await seedOrgTemplateScenario();
await apiSignin({ page, email: ownerA.email });
const { res, json } = await trpcQuery(
page,
'envelope.item.getManyByToken',
{ envelopeId: orgTemplate.id, access: { type: 'user' } },
teamA.id,
);
expect(res.ok()).toBeTruthy();
const items = json.result.data.json.data;
expect(items.length).toBeGreaterThan(0);
expect(items[0].envelopeId).toBe(orgTemplate.id);
});
test('should reject a user outside the organisation', async ({ page }) => {
const { orgTemplate } = await seedOrgTemplateScenario();
const { user: outsider, team: outsiderTeam } = await seedUser();
await apiSignin({ page, email: outsider.email });
const { res } = await trpcQuery(
page,
'envelope.item.getManyByToken',
{ envelopeId: orgTemplate.id, access: { type: 'user' } },
outsiderTeam.id,
);
expect(res.ok()).toBeFalsy();
});
test('should reject fetching items for a PRIVATE template from a sibling team', async ({
page,
}) => {
const { ownerA, teamA, memberB, teamB } = await seedOrgTemplateScenario();
const privateTemplate = await seedBlankTemplate(ownerA, teamA.id, {
createTemplateOptions: {
title: `Private Items ${nanoid()}`,
templateType: TemplateType.PRIVATE,
},
});
await apiSignin({ page, email: memberB.email });
const { res } = await trpcQuery(
page,
'envelope.item.getManyByToken',
{ envelopeId: privateTemplate.id, access: { type: 'user' } },
teamB.id,
);
expect(res.ok()).toBeFalsy();
});
test('should respect document visibility for the viewer team role', async ({ page }) => {
const { ownerA, teamA, memberB, teamB } = await seedOrgTemplateScenario();
const adminOnlyTemplate = await seedBlankTemplate(ownerA, teamA.id, {
createTemplateOptions: {
title: `Items Admin Only ${nanoid()}`,
templateType: TemplateType.ORGANISATION,
visibility: 'ADMIN',
},
});
// memberB is a MEMBER on teamB — must not be able to read items for an ADMIN-only template.
await apiSignin({ page, email: memberB.email });
const { res: memberRes } = await trpcQuery(
page,
'envelope.item.getManyByToken',
{ envelopeId: adminOnlyTemplate.id, access: { type: 'user' } },
teamB.id,
);
expect(memberRes.ok()).toBeFalsy();
await apiSignout({ page });
// ownerA is ADMIN on teamA — should succeed via the own-team path.
await apiSignin({ page, email: ownerA.email });
const { res: adminRes, json: adminJson } = await trpcQuery(
page,
'envelope.item.getManyByToken',
{ envelopeId: adminOnlyTemplate.id, access: { type: 'user' } },
teamA.id,
);
expect(adminRes.ok()).toBeTruthy();
expect(adminJson.result.data.json.data.length).toBeGreaterThan(0);
});
test('should reject unauthenticated callers using the user access type', async ({ page }) => {
const { orgTemplate, teamB } = await seedOrgTemplateScenario();
// No apiSignin — unauthenticated.
const { res } = await trpcQuery(
page,
'envelope.item.getManyByToken',
{ envelopeId: orgTemplate.id, access: { type: 'user' } },
teamB.id,
);
expect(res.ok()).toBeFalsy();
});
});
@@ -76,7 +76,10 @@ export const handleOAuthOrganisationCallbackUrl = async (
},
});
await onCreateUserHook(userToLink).catch((err) => {
await onCreateUserHook(userToLink, {
skipPersonalOrganisation:
!organisation.organisationAuthenticationPortal.allowPersonalOrganisations,
}).catch((err) => {
// Todo: (RR7) Add logging.
console.error(err);
});
+2 -1
View File
@@ -1,5 +1,6 @@
import { z } from 'zod';
import { ZNameSchema } from '@documenso/lib/constants/auth';
import { zEmail } from '@documenso/lib/utils/zod';
export const ZCurrentPasswordSchema = z
@@ -36,7 +37,7 @@ export const ZPasswordSchema = z
});
export const ZSignUpSchema = z.object({
name: z.string().min(1),
name: ZNameSchema,
email: zEmail(),
password: ZPasswordSchema,
signature: z.string().nullish(),
+16 -3
View File
@@ -3,7 +3,7 @@ import type { EnvelopeItem } from '@prisma/client';
import { getEnvelopeItemPdfUrl } from '../utils/envelope-download';
import { downloadFile } from './download-file';
type DocumentVersion = 'original' | 'signed';
type DocumentVersion = 'original' | 'signed' | 'pending';
type DownloadPDFProps = {
envelopeItem: Pick<EnvelopeItem, 'id' | 'envelopeId'>;
@@ -14,10 +14,24 @@ type DownloadPDFProps = {
* Specifies which version of the document to download.
* 'signed': Downloads the signed version (default).
* 'original': Downloads the original version.
* 'pending': Downloads the original document with currently-inserted fields burned in.
* Only valid while the envelope is in PENDING status. Not supported via
* recipient token.
*/
version?: DocumentVersion;
};
const versionToFilenameSuffix = (version: DocumentVersion): string => {
switch (version) {
case 'signed':
return '_signed.pdf';
case 'pending':
return '_pending.pdf';
case 'original':
return '.pdf';
}
};
export const downloadPDF = async ({
envelopeItem,
token,
@@ -34,10 +48,9 @@ export const downloadPDF = async ({
const blob = await fetch(downloadUrl).then(async (res) => await res.blob());
const baseTitle = (fileName ?? 'document').replace(/\.pdf$/, '');
const suffix = version === 'signed' ? '_signed.pdf' : '.pdf';
downloadFile({
filename: `${baseTitle}${suffix}`,
filename: `${baseTitle}${versionToFilenameSuffix(version)}`,
data: blob,
});
};
@@ -11,6 +11,18 @@ import { getRecipientColor } from '@documenso/ui/lib/recipient-colors';
import type { TEnvelope } from '../../types/envelope';
import type { FieldRenderMode } from '../../universal/field-renderer/render-field';
/**
* The signature data for an inserted signature field.
*
* Loaded separately from the envelope to avoid bloating the envelope.get response
* with potentially large base64 image payloads.
*/
export type EnvelopeRenderFieldSignature = {
fieldId: number;
signatureImageAsBase64: string | null;
typedSignature: string | null;
};
export type PageRenderData = {
scale: number;
pageIndex: number;
@@ -50,6 +62,7 @@ type EnvelopeRenderProviderValue = {
currentEnvelopeItem: EnvelopeRenderItem | null;
setCurrentEnvelopeItem: (envelopeItemId: string) => void;
fields: Field[];
signatures: EnvelopeRenderFieldSignature[];
recipients: Pick<Recipient, 'id' | 'name' | 'email' | 'signingStatus'>[];
getRecipientColorKey: (recipientId: number) => TRecipientColor;
@@ -89,6 +102,15 @@ interface EnvelopeRenderProviderProps {
*/
fields?: Field[];
/**
* Optional inserted signature data for signature fields.
*
* Fetched separately from the envelope to keep the envelope response lean.
* If a signature field has no entry here, the renderer will fall back to
* showing the field type placeholder.
*/
signatures?: EnvelopeRenderFieldSignature[];
/**
* Optional recipient used to determine the color of the fields and hover
* previews.
@@ -137,6 +159,7 @@ export const EnvelopeRenderProvider = ({
envelope,
envelopeItems: envelopeItemsFromProps,
fields,
signatures,
token,
presignToken,
recipients = [],
@@ -212,6 +235,7 @@ export const EnvelopeRenderProvider = ({
currentEnvelopeItem: currentItem,
setCurrentEnvelopeItem,
fields: fields ?? [],
signatures: signatures ?? [],
recipients,
getRecipientColorKey,
renderError,
+15
View File
@@ -1,8 +1,23 @@
import { z } from 'zod';
import { env } from '../utils/env';
import { NEXT_PUBLIC_WEBAPP_URL } from './app';
export const SALT_ROUNDS = 12;
export const URL_PATTERN = /https?:\/\/|www\./i;
/**
* Shared name schema that disallows URLs to prevent phishing via email rendering.
*/
export const ZNameSchema = z
.string()
.trim()
.min(3, { message: 'Please enter a valid name.' })
.refine((value) => !URL_PATTERN.test(value), {
message: 'Name cannot contain URLs.',
});
export const IDENTITY_PROVIDER_NAME: Record<string, string> = {
DOCUMENSO: 'Documenso',
GOOGLE: 'Google',
+30 -6
View File
@@ -31,6 +31,14 @@ export const DEFAULT_ENVELOPE_REMINDER_SETTINGS: TEnvelopeReminderSettings = {
repeatEvery: { unit: 'day', amount: 2 },
};
/**
* Hard upper bound on the window in which automated reminders may be sent,
* measured from the moment the signing request was first sent to the
* recipient. Prevents runaway reminder chains for recipients with no
* expiration set who never sign.
*/
export const MAX_REMINDER_WINDOW_DAYS = 30;
const UNIT_TO_LUXON_KEY: Record<TEnvelopeReminderDurationPeriod['unit'], keyof DurationLikeObject> =
{
day: 'days',
@@ -49,6 +57,9 @@ export const getEnvelopeReminderDuration = (period: TEnvelopeReminderDurationPer
* - `{ sendAfter: { disabled: true }, ... }` means never send the first reminder.
* - `{ repeatEvery: { disabled: true }, ... }` means don't repeat after the first reminder.
*
* A hard cap of `MAX_REMINDER_WINDOW_DAYS` days from `sentAt` is enforced —
* any computed reminder beyond that point returns null so reminders stop.
*
* `sentAt` is when the signing request was sent to this specific recipient.
*
* Returns the next Date the reminder should be sent, or null if no reminder should be sent.
@@ -64,6 +75,12 @@ export const resolveNextReminderAt = (options: {
return null;
}
const maxReminderAt = new Date(
sentAt.getTime() + Duration.fromObject({ days: MAX_REMINDER_WINDOW_DAYS }).toMillis(),
);
let candidate: Date;
// If we haven't sent the first reminder yet, use sendAfter.
if (!lastReminderSentAt) {
if ('disabled' in config.sendAfter) {
@@ -72,15 +89,22 @@ export const resolveNextReminderAt = (options: {
const delay = getEnvelopeReminderDuration(config.sendAfter);
return new Date(sentAt.getTime() + delay.toMillis());
candidate = new Date(sentAt.getTime() + delay.toMillis());
} else {
// For subsequent reminders, use repeatEvery.
if ('disabled' in config.repeatEvery) {
return null;
}
const interval = getEnvelopeReminderDuration(config.repeatEvery);
candidate = new Date(lastReminderSentAt.getTime() + interval.toMillis());
}
// For subsequent reminders, use repeatEvery.
if ('disabled' in config.repeatEvery) {
// Stop if the candidate is past the hard cap measured from sentAt.
if (candidate.getTime() > maxReminderAt.getTime()) {
return null;
}
const interval = getEnvelopeReminderDuration(config.repeatEvery);
return new Date(lastReminderSentAt.getTime() + interval.toMillis());
return candidate;
};
+24 -2
View File
@@ -12,15 +12,21 @@ export enum AppErrorCode {
'RECIPIENT_EXPIRED' = 'RECIPIENT_EXPIRED',
'LIMIT_EXCEEDED' = 'LIMIT_EXCEEDED',
'NOT_FOUND' = 'NOT_FOUND',
'NOT_IMPLEMENTED' = 'NOT_IMPLEMENTED',
'NOT_SETUP' = 'NOT_SETUP',
'INVALID_CAPTCHA' = 'INVALID_CAPTCHA',
'UNAUTHORIZED' = 'UNAUTHORIZED',
'FORBIDDEN' = 'FORBIDDEN',
'UNKNOWN_ERROR' = 'UNKNOWN_ERROR',
'RETRY_EXCEPTION' = 'RETRY_EXCEPTION',
'SCHEMA_FAILED' = 'SCHEMA_FAILED',
'TOO_MANY_REQUESTS' = 'TOO_MANY_REQUESTS',
'TWO_FACTOR_AUTH_FAILED' = 'TWO_FACTOR_AUTH_FAILED',
'WEBHOOK_INVALID_REQUEST' = 'WEBHOOK_INVALID_REQUEST',
'ENVELOPE_DRAFT' = 'ENVELOPE_DRAFT',
'ENVELOPE_COMPLETED' = 'ENVELOPE_COMPLETED',
'ENVELOPE_REJECTED' = 'ENVELOPE_REJECTED',
'ENVELOPE_LEGACY' = 'ENVELOPE_LEGACY',
}
export const genericErrorCodeToTrpcErrorCodeMap: Record<string, { code: string; status: number }> =
@@ -32,13 +38,19 @@ export const genericErrorCodeToTrpcErrorCodeMap: Record<string, { code: string;
[AppErrorCode.INVALID_REQUEST]: { code: 'BAD_REQUEST', status: 400 },
[AppErrorCode.INVALID_CAPTCHA]: { code: 'BAD_REQUEST', status: 400 },
[AppErrorCode.NOT_FOUND]: { code: 'NOT_FOUND', status: 404 },
[AppErrorCode.NOT_IMPLEMENTED]: { code: 'INTERNAL_SERVER_ERROR', status: 501 },
[AppErrorCode.NOT_SETUP]: { code: 'BAD_REQUEST', status: 400 },
[AppErrorCode.UNAUTHORIZED]: { code: 'UNAUTHORIZED', status: 401 },
[AppErrorCode.FORBIDDEN]: { code: 'FORBIDDEN', status: 403 },
[AppErrorCode.UNKNOWN_ERROR]: { code: 'INTERNAL_SERVER_ERROR', status: 500 },
[AppErrorCode.RETRY_EXCEPTION]: { code: 'INTERNAL_SERVER_ERROR', status: 500 },
[AppErrorCode.SCHEMA_FAILED]: { code: 'INTERNAL_SERVER_ERROR', status: 500 },
[AppErrorCode.TOO_MANY_REQUESTS]: { code: 'TOO_MANY_REQUESTS', status: 429 },
[AppErrorCode.TWO_FACTOR_AUTH_FAILED]: { code: 'UNAUTHORIZED', status: 401 },
[AppErrorCode.ENVELOPE_DRAFT]: { code: 'BAD_REQUEST', status: 400 },
[AppErrorCode.ENVELOPE_COMPLETED]: { code: 'BAD_REQUEST', status: 400 },
[AppErrorCode.ENVELOPE_REJECTED]: { code: 'BAD_REQUEST', status: 400 },
[AppErrorCode.ENVELOPE_LEGACY]: { code: 'BAD_REQUEST', status: 400 },
};
export const ZAppErrorJsonSchema = z.object({
@@ -216,15 +228,25 @@ export class AppError extends Error {
}
static toRestAPIError(err: unknown): {
status: 400 | 401 | 404 | 500;
status: 400 | 401 | 403 | 404 | 500 | 501;
body: { message: string };
} {
const error = AppError.parseError(err);
const status = match(error.code)
.with(AppErrorCode.INVALID_BODY, AppErrorCode.INVALID_REQUEST, () => 400 as const)
.with(
AppErrorCode.INVALID_BODY,
AppErrorCode.INVALID_REQUEST,
AppErrorCode.ENVELOPE_DRAFT,
AppErrorCode.ENVELOPE_COMPLETED,
AppErrorCode.ENVELOPE_REJECTED,
AppErrorCode.ENVELOPE_LEGACY,
() => 400 as const,
)
.with(AppErrorCode.UNAUTHORIZED, () => 401 as const)
.with(AppErrorCode.FORBIDDEN, () => 403 as const)
.with(AppErrorCode.NOT_FOUND, () => 404 as const)
.with(AppErrorCode.NOT_IMPLEMENTED, () => 501 as const)
.otherwise(() => 500 as const);
return {
@@ -19,6 +19,7 @@ const BACKPORT_SUBSCRIPTION_CLAIM_JOB_DEFINITION_SCHEMA = z.object({
embedSigningWhiteLabel: z.literal(true).optional(),
cfr21: z.literal(true).optional(),
hipaa: z.literal(true).optional(),
signingReminders: z.literal(true).optional(),
// Todo: Envelopes - Do we need to check?
// authenticationPortal & emailDomains missing here.
}),
@@ -44,13 +44,16 @@ export const run = async ({
const now = new Date();
// Atomically claim this reminder by setting lastReminderSentAt and clearing
// nextReminderAt so no other sweep picks it up.
// nextReminderAt so no other sweep picks it up. The expiration filter
// guards against races where the expiration sweep hasn't yet flagged
// a recipient whose deadline has already passed.
const updatedCount = await prisma.recipient.updateMany({
where: {
id: recipientId,
signingStatus: SigningStatus.NOT_SIGNED,
sendStatus: SendStatus.SENT,
role: { not: RecipientRole.CC },
OR: [{ expiresAt: null }, { expiresAt: { gt: now } }],
envelope: {
status: DocumentStatus.PENDING,
deletedAt: null,
@@ -20,6 +20,11 @@ export const run = async ({
signingStatus: SigningStatus.NOT_SIGNED,
sendStatus: SendStatus.SENT,
role: { not: RecipientRole.CC },
// Skip recipients whose signing deadline has passed. `expiresAt`
// is the source of truth — the expiration sweep asynchronously
// sets `expirationNotifiedAt`, so filtering on `expiresAt` also
// covers the window before the expiration sweep runs.
OR: [{ expiresAt: null }, { expiresAt: { gt: now } }],
envelope: {
status: DocumentStatus.PENDING,
deletedAt: null,
@@ -35,6 +35,7 @@ export const getFieldsForToken = async ({ token }: GetFieldsForTokenOptions) =>
signingOrder: {
gte: recipient.signingOrder ?? 0,
},
envelopeId: recipient.envelopeId,
},
envelope: {
id: recipient.envelopeId,
@@ -38,6 +38,7 @@ export const removeSignedFieldWithToken = async ({
signingStatus: {
not: SigningStatus.SIGNED,
},
envelopeId: recipient.envelopeId,
}),
},
},
@@ -78,6 +78,7 @@ export const signFieldWithToken = async ({
signingOrder: {
gte: recipient.signingOrder ?? 0,
},
envelopeId: recipient.envelopeId,
}),
},
},
@@ -142,6 +142,7 @@ export const generateCertificatePdf = async (options: GenerateCertificatePdfOpti
};
}),
envelopeOwner,
envelopeId: envelope.id,
qrToken: envelope.qrToken,
hidePoweredBy: organisationClaim.flags.hidePoweredBy ?? false,
pageWidth,
@@ -0,0 +1,80 @@
import { PDF } from '@libpdf/core';
import { groupBy } from 'remeda';
import type { FieldWithSignature } from '@documenso/prisma/types/field-with-signature';
import { insertFieldInPDFV2 } from './insert-field-in-pdf-v2';
type GeneratePartialSignedPdfOptions = {
pdfData: Uint8Array;
fields: FieldWithSignature[];
};
/**
* Generates a PDF with all currently-inserted fields burned in. Used to serve
* partially signed envelopes during the `PENDING` window before the seal job
* has had a chance to produce the final sealed PDF.
*
* No PKI signature, no certificate page, no audit log appendix - this is a
* preview of the in-progress envelope, not a final executed document.
*/
export const generatePartialSignedPdf = async ({
pdfData,
fields,
}: GeneratePartialSignedPdfOptions) => {
const pdfDoc = await PDF.load(pdfData);
pdfDoc.flattenAll();
pdfDoc.upgradeVersion('1.7');
const fieldsGroupedByPage = groupBy(fields, (field) => field.page);
for (const [pageNumber, pageFields] of Object.entries(fieldsGroupedByPage)) {
const page = pdfDoc.getPage(Number(pageNumber) - 1);
if (!page) {
throw new Error(`Page ${pageNumber} does not exist`);
}
const pageWidth = page.width;
const pageHeight = page.height;
const overlayBytes = await insertFieldInPDFV2({
pageWidth,
pageHeight,
fields: pageFields,
});
const overlayPdf = await PDF.load(overlayBytes);
const embeddedPage = await pdfDoc.embedPage(overlayPdf, 0);
let translateX = 0;
let translateY = 0;
switch (page.rotation) {
case 90:
translateX = pageHeight;
translateY = 0;
break;
case 180:
translateX = pageWidth;
translateY = pageHeight;
break;
case 270:
translateX = 0;
translateY = pageWidth;
break;
}
page.drawPage(embeddedPage, {
x: translateX,
y: translateY,
rotate: {
angle: page.rotation,
},
});
}
pdfDoc.flattenAll();
return await pdfDoc.save({ useXRefStream: true });
};
@@ -57,7 +57,7 @@ const textXs = 8;
const fontMedium = '500';
const pageTopMargin = 60;
const pageBottomMargin = 15;
const pageBottomMargin = 27;
const contentMaxWidth = 768;
const rowPadding = 10;
const titleFontSize = 18;
@@ -595,7 +595,7 @@ export async function renderAuditLogs({
const groupedRows = groupRowsIntoPages({
auditLogs,
maxHeight: pageHeight,
maxHeight: pageHeight - pageBottomMargin,
contentWidth,
i18n,
overviewCard,
@@ -622,6 +622,16 @@ export async function renderAuditLogs({
stage.destroyChildren();
const page = new Konva.Layer();
const footerText = new Konva.Text({
x: margin,
y: pageHeight - textXs - 10,
text: `${i18n._(msg`Envelope ID`)}: ${envelope.id}`,
fontFamily: 'Inter',
fontSize: textXs,
fill: textMutedForegroundLight,
});
page.add(footerText);
page.add(pageGroup);
// Add branding on the last page if there is space.
@@ -657,6 +667,16 @@ export async function renderAuditLogs({
y: pageTopMargin,
} satisfies Partial<Konva.GroupConfig>);
const overflowFooterText = new Konva.Text({
x: margin,
y: pageHeight - textXs - 10,
text: `${i18n._(msg`Envelope ID`)}: ${envelope.id}`,
fontFamily: 'Inter',
fontSize: textXs,
fill: textMutedForegroundLight,
});
page.add(overflowFooterText);
page.add(brandingGroup);
stage.add(page);
@@ -49,6 +49,7 @@ export type CertificateRecipient = {
type GenerateCertificateOptions = {
recipients: CertificateRecipient[];
envelopeId: string;
qrToken: string | null;
hidePoweredBy: boolean;
i18n: I18n;
@@ -88,7 +89,7 @@ const columnWidthPercentages = [30, 30, 40];
const rowPadding = 12;
const tableHeaderHeight = 38;
const pageTopMargin = 72;
const pageBottomMargin = 12;
const pageBottomMargin = 24;
const contentMaxWidth = 768;
const titleFontSize = 18;
@@ -717,6 +718,7 @@ const renderTables = (options: RenderTablesOptions) => {
export async function renderCertificate({
recipients,
envelopeId,
qrToken,
hidePoweredBy,
i18n,
@@ -802,6 +804,16 @@ export async function renderCertificate({
}
}
const footerText = new Konva.Text({
x: margin,
y: pageHeight - textXs - 10,
text: `${i18n._(msg`Envelope ID`)}: ${envelopeId}`,
fontFamily: 'Inter',
fontSize: textXs,
fill: textMutedForegroundLight,
});
page.add(footerText);
page.add(group);
stage.add(page);
@@ -820,6 +832,16 @@ export async function renderCertificate({
y: pageTopMargin / 2, // Less padding since there's nothing else on this page.
} satisfies Partial<Konva.GroupConfig>);
const overflowFooterText = new Konva.Text({
x: margin,
y: pageHeight - textXs - 10,
text: `${i18n._(msg`Envelope ID`)}: ${envelopeId}`,
fontFamily: 'Inter',
fontSize: textXs,
fill: textMutedForegroundLight,
});
page.add(overflowFooterText);
page.add(brandingGroup);
stage.add(page);
@@ -80,6 +80,8 @@ export const recomputeNextReminderForEnvelope = async (envelopeId: string) => {
? ZEnvelopeReminderSettings.parse(envelope.documentMeta.reminderSettings)
: null;
const now = new Date();
const recipients = await prisma.recipient.findMany({
where: {
envelopeId,
@@ -87,6 +89,8 @@ export const recomputeNextReminderForEnvelope = async (envelopeId: string) => {
sendStatus: SendStatus.SENT,
sentAt: { not: null },
role: { not: RecipientRole.CC },
// Don't reschedule reminders for recipients whose deadline has passed.
OR: [{ expiresAt: null }, { expiresAt: { gt: now } }],
},
select: { id: true, sentAt: true, lastReminderSentAt: true },
});
+16 -2
View File
@@ -60,13 +60,27 @@ export const createUser = async ({ name, email, password, signature }: CreateUse
return user;
};
export type OnCreateUserHookOptions = {
/**
* When true, do not create a "Personal Organisation" for the new user.
* Used by the Organisation SSO signup path, where the user is intended
* to operate inside the SSO organisation rather than a personal space.
*
* Defaults to false — preserves the historical behaviour of creating a
* personal organisation for every new user.
*/
skipPersonalOrganisation?: boolean;
};
/**
* Should be run after a user is created, example during email password signup or google sign in.
*
* @returns User
*/
export const onCreateUserHook = async (user: User) => {
await createPersonalOrganisation({ userId: user.id });
export const onCreateUserHook = async (user: User, options: OnCreateUserHookOptions = {}) => {
if (!options.skipPersonalOrganisation) {
await createPersonalOrganisation({ userId: user.id });
}
return user;
};
@@ -2,7 +2,7 @@ import crypto from 'crypto';
import { prisma } from '@documenso/prisma';
import { ONE_DAY } from '../../constants/time';
import { ONE_HOUR } from '../../constants/time';
import { sendForgotPassword } from '../auth/send-forgot-password';
export const forgotPassword = async ({ email }: { email: string }) => {
@@ -41,7 +41,7 @@ export const forgotPassword = async ({ email }: { email: string }) => {
await prisma.passwordResetToken.create({
data: {
token,
expiry: new Date(Date.now() + ONE_DAY),
expiry: new Date(Date.now() + ONE_HOUR),
userId: user.id,
},
});
@@ -54,6 +54,12 @@ export const updatePassword = async ({
},
});
await tx.passwordResetToken.deleteMany({
where: {
userId,
},
});
return await tx.user.update({
where: {
id: userId,
+167 -85
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-04-22 14:34\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -45,10 +45,6 @@ msgstr "„{documentName}“ wurde unterschrieben"
msgid "“{documentName}” was signed by all signers"
msgstr "„{documentName}“ wurde von allen Unterzeichnern signiert"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" wurde erfolgreich gelöscht"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\" im Auftrag des \"Team Name\" hat Sie eingeladen, das \"Beispieldokument\" zu unterschreiben."
@@ -57,6 +53,10 @@ msgstr "\"{placeholderEmail}\" im Auftrag des \"Team Name\" hat Sie eingeladen,
msgid "\"{title}\" has been successfully deleted"
msgstr "\"{title}\" wurde erfolgreich gelöscht"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "\"{title}\" wurde erfolgreich ausgeblendet"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Team Name\" hat Sie eingeladen, das \"Beispieldokument\" zu unterschreiben."
@@ -301,14 +301,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, one {Tag} other {Tage}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, one {Monat} other {Monate}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, one {Woche} other {Wochen}}"
@@ -1143,6 +1146,7 @@ msgstr "Aktion"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1488,7 +1492,6 @@ msgstr "Alle E-Mail-Domains wurden erfolgreich synchronisiert"
msgid "All Folders"
msgstr "Alle Ordner"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "Alle eingefügten Unterschriften werden annulliert"
@@ -1501,7 +1504,6 @@ msgstr "Alle Elemente müssen vom selben Typ sein."
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "Alle Empfänger haben unterschrieben. Das Dokument wird verarbeitet und Sie erhalten in Kürze eine Kopie per E-Mail."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1599,6 +1601,8 @@ msgstr "Eine E-Mail mit einer Einladung wird an jedes Mitglied gesendet."
msgid "An email with this address already exists."
msgstr "Eine E-Mail mit dieser Adresse existiert bereits."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1694,6 @@ msgstr "Ein Fehler ist aufgetreten, während das direkte Links-Signieren deaktiv
msgid "An error occurred while disabling the user."
msgstr "Ein Fehler ist aufgetreten, während der Benutzer deaktiviert wurde."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "Ein Fehler ist aufgetreten, während die Vorlage dupliziert wurde."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "Ein Fehler ist aufgetreten, während das direkte Links-Signieren aktiviert wurde."
@@ -1933,6 +1933,7 @@ msgstr "Genehmigen"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "Dokument genehmigen"
@@ -1996,7 +1997,6 @@ msgstr "Sind Sie sicher, dass Sie diese Organisation löschen möchten?"
msgid "Are you sure you wish to delete this team?"
msgstr "Bist du dir sicher, dass du dieses Team löschen möchtest?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2029,6 +2029,7 @@ msgstr "Helfen"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "Dokumentassistenz"
@@ -2302,7 +2303,6 @@ msgstr "Indem Sie dieser Anfrage zustimmen, erteilen Sie {0} die folgenden Berec
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "Durch die Annahme dieser Anfrage gewähren Sie <0>{teamName}</0> Zugriff auf:"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "Durch das Löschen dieses Dokuments wird Folgendes passieren:"
@@ -2336,16 +2336,16 @@ msgid "Can't find someone?"
msgstr "Person nicht gefunden?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2401,7 @@ msgstr "Person nicht gefunden?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2777,10 @@ msgstr "Konfigurieren Sie die allgemeinen Einstellungen für die Vorlage."
msgid "Configure security settings for the document."
msgstr "Sicherheitseinstellungen für das Dokument konfigurieren."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "Konfigurieren Sie die Einstellungen für Signatur-Erinnerungen für das Dokument."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "Vorlage konfigurieren"
@@ -2807,6 +2809,10 @@ msgstr "Konfigurieren Sie die Teamrollen für jede Gruppe"
msgid "Configure the team roles for each member"
msgstr "Konfigurieren Sie die Teamrollen für jedes Mitglied"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "Konfigurieren Sie, wann und wie oft Erinnerungs-E-Mails an Empfänger gesendet werden, die die Signatur noch nicht abgeschlossen haben. Wenn „Vererben\" ausgewählt ist, wird die Standardeinstellung des Teams verwendet."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2885,12 @@ msgid "Continue"
msgstr "Fortsetzen"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "Fahre fort, indem du das Dokument genehmigst."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "Fahren Sie fort, indem Sie das Dokument unterstützen."
@@ -2891,10 +2899,12 @@ msgid "Continue by downloading the document."
msgstr "Fahre fort, indem du das Dokument herunterlädst."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "Fahre fort, indem du das Dokument signierst."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "Fahre fort, indem du das Dokument ansiehst."
@@ -2927,6 +2937,10 @@ msgstr "Steuert das Format der Nachricht, die gesendet wird, wenn ein Empfänger
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "Legt die Sprache des Dokuments fest, einschließlich der Sprache für E-Mail-Benachrichtigungen und des endgültigen Zertifikats, das generiert und dem Dokument angehängt wird."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "Legt fest, wann und wie oft Erinnerungs-E-Mails an Empfänger gesendet werden, die die Signatur noch nicht abgeschlossen haben."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "Steuert, ob die Protokolllogs im Dokument enthalten sind, wenn es heruntergeladen wird. Die Protokolllogs können weiterhin separat von der Logseite heruntergeladen werden."
@@ -3313,6 +3327,10 @@ msgstr "Benutzerdefinierte {0} MB-Datei"
msgid "Custom duration"
msgstr "Benutzerdefinierte Dauer"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "Benutzerdefiniertes Intervall"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "Benutzerdefinierte Organisationsgruppen"
@@ -3414,6 +3432,10 @@ msgstr "Standard­einstellungen, die auf dieses Team angewendet werden. Vererbte
msgid "Default Signature Settings"
msgstr "Standard-Signatureinstellungen"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "Standard-Signaturerinnerungen"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "Standard-Zeitzone"
@@ -3437,13 +3459,11 @@ msgstr "Dokumenten­eigentum delegieren"
msgid "Delegate Document Ownership"
msgstr "Dokumenteigentum delegieren"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "löschen"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3477,6 @@ msgstr "löschen"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3813,14 +3832,6 @@ msgstr "DKIM-Datensätze erstellt. Bitte fügen Sie die DNS-Datensätze hinzu, u
msgid "DNS Records"
msgstr "DNS-Datensätze"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "Möchten Sie diese Vorlage löschen?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "Möchten Sie diese Vorlage duplizieren?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Documenso-Lizenz"
@@ -3946,7 +3957,6 @@ msgid "Document Creation"
msgstr "Dokumenterstellung"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3977,7 +3987,7 @@ msgstr "Verteilungsmethode für Dokumente"
msgid "Document draft"
msgstr "Dokument-Entwurf"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "Dokument dupliziert"
@@ -3994,6 +4004,10 @@ msgstr "Externe ID des Dokuments aktualisiert"
msgid "Document found in your account"
msgstr "Dokument in Ihrem Konto gefunden"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "Dokument ausgeblendet"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4109,7 +4123,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "Dokument unterschreiben Authentifizierung aktualisiert"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "Der Dokumentenunterzeichnungsprozess wird abgebrochen"
@@ -4188,7 +4201,6 @@ msgstr "Sichtbarkeit des Dokuments aktualisiert"
msgid "Document Volume"
msgstr "Dokumentenmenge"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "Dokument wird dauerhaft gelöscht"
@@ -4284,6 +4296,10 @@ msgstr "Domain erneut registriert"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "Haben Sie kein Konto? <0>Registrieren</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "Nicht wiederholen"
#: 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)"
@@ -4395,10 +4411,7 @@ msgstr "Dropdown-Einstellungen"
msgid "Dropdown values"
msgstr "Dropdown-Werte"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4781,6 +4794,7 @@ msgstr "Team-API-Tokens aktivieren, um das Dokumenteigentum an ein anderes Teamm
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "Aktiviert"
@@ -4906,10 +4920,6 @@ msgstr "Unternehmen"
msgid "Envelope distributed"
msgstr "Umschlag verteilt"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "Umschlag dupliziert"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4963,7 +4973,6 @@ msgstr "Umschlag aktualisiert"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5665,6 +5674,10 @@ msgstr "So funktioniert es:"
msgid "Hey Im Timur"
msgstr "Hey, ich bin Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Hallo {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Hallo, {userName},"
@@ -5677,7 +5690,6 @@ msgstr "Hallo {userName}, Sie müssen einen Verifizierungscode eingeben, um das
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "Hallo, {userName} <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5866,6 +5878,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"
@@ -6568,6 +6581,14 @@ msgstr "Mitglied"
msgid "Member Count"
msgstr "Mitgliederanzahl"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "Das Mitglied wurde aus der Organisation entfernt."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "Das Mitglied wurde aus dem Team entfernt."
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "Mitglied seit"
@@ -6939,6 +6960,10 @@ msgstr "In Ihrem Dokument wurden keine Empfänger erkannt."
msgid "No recipients with this role"
msgstr "Keine Empfänger mit dieser Rolle"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "Keine Erinnerungen"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7088,7 +7113,6 @@ msgstr "Auf dieser Seite können Sie API-Token erstellen und verwalten. Weitere
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "Auf dieser Seite können Sie neue Webhooks erstellen und die vorhandenen verwalten."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7654,7 +7678,6 @@ msgstr "Bitte bestätige deine E-Mail"
msgid "Please confirm your email address"
msgstr "Bitte bestätige deine E-Mail-Adresse"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "Bitte kontaktieren Sie den Support, wenn Sie diese Aktion rückgängig machen möchten."
@@ -7713,13 +7736,11 @@ msgstr "Bitte beachten Sie: Jeder, der sich über Ihr Portal anmeldet, wird Ihre
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Bitte beachten Sie, dass das Fortfahren den direkten Linkempfänger entfernt und ihn in einen Platzhalter umwandelt."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "Bitte beachten Sie, dass diese Aktion <0>irreversibel</0> ist."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "Bitte beachten Sie, dass diese Aktion <0>irreversibel</0> ist. Nachdem dies bestätigt wurde, wird dieses Dokument dauerhaft gelöscht."
@@ -7728,10 +7749,6 @@ msgstr "Bitte beachten Sie, dass diese Aktion <0>irreversibel</0> ist. Nachdem d
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "Bitte beachten Sie, dass diese Aktion <0>irreversibel</0> ist. Sobald Sie dies bestätigt haben, wird diese Vorlage dauerhaft gelöscht."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Bitte beachten Sie, dass diese Aktion irreversibel ist. Sobald sie bestätigt wird, wird Ihre Vorlage dauerhaft gelöscht."
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "Bitte beachten Sie, dass diese Aktion irreversibel ist. Sobald sie bestätigt wird, wird Ihr Token dauerhaft gelöscht."
@@ -7792,9 +7809,7 @@ msgstr "Bitte versuchen Sie es erneut und stellen Sie sicher, dass Sie die korre
msgid "Please try again or contact our support."
msgstr "Bitte versuchen Sie es erneut oder kontaktieren Sie unseren Support."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "Bitte {0} eingeben, um zu bestätigen"
@@ -8184,7 +8199,6 @@ msgstr "Empfänger, die neuen Dokumenten automatisch hinzugefügt werden."
msgid "Recipients will be able to sign the document once sent"
msgstr "Empfänger können das Dokument nach dem Versand unterschreiben"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "Empfänger behalten weiterhin ihre Kopie des Dokuments"
@@ -8276,16 +8290,32 @@ msgstr "Neu laden"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "Haben Sie Ihr Passwort vergessen? <0>Einloggen</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "Erinnerung, {documentName} zu {action}"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "Erinnerung: {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "Erinnerung: {0} hat dich eingeladen, ein Dokument {recipientActionVerb}"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "Erinnerung: Bitte {0} dein Dokument<0/>\"{documentName}\""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "Erinnerung: Bitte {recipientActionVerb} das Dokument \"{0}\""
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "Erinnerung: Bitte {recipientActionVerb} dieses Dokument"
@@ -8294,6 +8324,12 @@ msgstr "Erinnerung: Bitte {recipientActionVerb} dieses Dokument"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Erinnerung: Bitte {recipientActionVerb} dein Dokument"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "Erinnerungen"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8320,6 +8356,11 @@ msgstr "Entfernen"
msgid "Remove email domain"
msgstr "E-Mail-Domain entfernen"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "Mitglied entfernen"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8329,6 +8370,10 @@ msgstr "Organisationsgruppe entfernen"
msgid "Remove organisation member"
msgstr "Organisationsmitglied entfernen"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "Organisationsmitglied entfernen"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "Empfänger entfernen"
@@ -8342,6 +8387,10 @@ msgstr "Team-E-Mail entfernen"
msgid "Remove team member"
msgstr "Teammitglied entfernen"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "Teammitglied entfernen"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8993,6 +9042,10 @@ msgstr "Dokumente sofort an Empfänger senden"
msgid "Send Envelope"
msgstr "Umschlag senden"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "Erste Erinnerung senden nach"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "Im Namen des Teams senden"
@@ -9156,6 +9209,7 @@ msgstr "Dokument unterschreiben"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "Dokument signieren"
@@ -9354,6 +9408,10 @@ msgstr "Unterzeichnungslinks wurden für dieses Dokument erstellt."
msgid "Signing order is enabled."
msgstr "Unterzeichnungsreihenfolge ist aktiviert."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "Signatur-Erinnerungen"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "Signaturstatus"
@@ -9405,8 +9463,6 @@ msgstr "Überspringen"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Einige Unterzeichner haben noch kein Unterschriftsfeld zugewiesen bekommen. Bitte weisen Sie jedem Unterzeichner mindestens ein Unterschriftsfeld zu, bevor Sie fortfahren."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9419,7 +9475,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9665,8 +9720,10 @@ msgid "Subscription Status"
msgstr "Abonnementstatus"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10048,7 @@ msgstr "Vorlage (Legacy)"
msgid "Template Created"
msgstr "Vorlage erstellt"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "Vorlage gelöscht"
@@ -9999,8 +10056,8 @@ msgstr "Vorlage gelöscht"
msgid "Template document uploaded"
msgstr "Vorlagendokument hochgeladen"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "Vorlage dupliziert"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
@@ -10015,6 +10072,10 @@ msgstr "Vorlage ist von Deinem öffentlichen Profil entfernt worden."
msgid "Template has been updated."
msgstr "Vorlage wurde aktualisiert."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "Vorlage ausgeblendet"
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "Vorlagen-ID (Legacy)"
@@ -10184,6 +10245,10 @@ msgstr "Der direkte Linkt wurde in die Zwischenablage kopiert"
msgid "The display name for this email address"
msgstr "Der Anzeigename für diese E-Mail-Adresse"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "Das Dokument konnte aufgrund fehlender oder ungültiger Informationen nicht erstellt werden. Bitte überprüfen Sie die Empfänger und Felder der Vorlage."
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "Das Dokument wurde erfolgreich gelöscht."
@@ -10224,7 +10289,6 @@ msgstr "Das Dokumenteigentum wurde im Namen von {1} an {0} delegiert"
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."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "Das Dokument wird von Ihrem Konto verborgen werden"
@@ -10453,6 +10517,10 @@ msgstr "Das Team, das Sie suchen, wurde möglicherweise entfernt, umbenannt oder
msgid "The template has been moved successfully."
msgstr "Die Vorlage wurde erfolgreich verschoben."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "Die Vorlage oder einer ihrer Empfänger konnte nicht gefunden werden."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "Die Vorlage wird von Ihrem Profil entfernt"
@@ -10530,6 +10598,10 @@ msgstr "Der Webhook wurde erfolgreich erstellt."
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "Der gesuchte Webhook wurde möglicherweise entfernt, umbenannt oder existierte nie."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "Dann wiederholen alle"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "Es gibt derzeit keine aktiven Entwürfe. Sie können ein Dokument hochladen, um mit dem Entwerfen zu beginnen."
@@ -10572,6 +10644,8 @@ msgstr "Diese Aktion ist unwiderruflich. Bitte stellen Sie sicher, dass Sie den
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "Diese Aktion ist nicht umkehrbar. Bitte seien Sie sicher."
@@ -10597,7 +10671,6 @@ msgstr "Dieses Dokument kann nicht wiederhergestellt werden. Wenn du den Grund f
msgid "This document cannot be changed"
msgstr "Dieses Dokument kann nicht geändert werden"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "Dieses Dokument konnte derzeit nicht gelöscht werden. Bitte versuchen Sie es erneut."
@@ -10606,7 +10679,6 @@ msgstr "Dieses Dokument konnte derzeit nicht gelöscht werden. Bitte versuchen S
msgid "This document could not be downloaded at this time. Please try again."
msgstr "Dieses Dokument konnte derzeit nicht heruntergeladen werden. Bitte versuche es erneut."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Dieses Dokument konnte derzeit nicht dupliziert werden. Bitte versuche es erneut."
@@ -10772,10 +10844,14 @@ msgstr "Dieser Unterzeichner hat das Dokument bereits unterschrieben."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Dieses Team und alle zugehörigen Daten, ausgenommen Rechnungen, werden permanent gelöscht."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "Diese Vorlage konnte derzeit nicht gelöscht werden. Bitte versuchen Sie es erneut."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "Diese Vorlage konnte derzeit nicht dupliziert werden. Bitte versuchen Sie es erneut."
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "Diese Vorlage verwendet Altfeld-Integration, wir empfehlen das Verwenden der neuen Methode für genauere Ergebnisse."
@@ -10879,6 +10955,10 @@ msgstr "Titel darf nicht leer sein"
msgid "To accept this invitation you must create an account."
msgstr "Um diese Einladung anzunehmen, müssen Sie ein Konto erstellen."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "Um Mitglieder zu diesem Team hinzuzufügen, müssen sie zunächst in die Organisation eingeladen werden. Nur Administratoren und Manager der Organisation können neue Mitglieder einladen bitte wende dich an eine dieser Personen, damit sie in deinem Namen Mitglieder einlädt."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "Um Mitglieder zu diesem Team hinzuzufügen, müssen Sie sie zuerst zur Organisation hinzufügen."
@@ -11818,6 +11898,7 @@ msgstr "Dokument anzeigen"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11984,6 +12065,11 @@ msgstr "Wir konnten keinen Stripe-Kunden erstellen. Bitte versuchen Sie es erneu
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/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "Dieses Mitglied konnte nicht entfernt werden. Bitte versuche es später 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."
@@ -12246,6 +12332,10 @@ msgstr "Wir konnten Ihre Dokumentpräferenzen zu diesem Zeitpunkt nicht aktualis
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "Wir konnten Ihre E-Mail-Präferenzen derzeit nicht aktualisieren, bitte versuchen Sie es später noch einmal."
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
msgstr "Wir konnten nicht überprüfen, ob Sie ein Mensch sind. Bitte versuchen Sie es erneut."
#: 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-signing/document-signing-auth-password.tsx
@@ -12479,10 +12569,6 @@ msgstr "Sie sind im Begriff, die Unterzeichnung des folgenden Dokuments abzuschl
msgid "You are about to complete viewing the following document"
msgstr "Sie sind im Begriff, die Ansicht des folgenden Dokuments abzuschließen"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "Sie sind dabei, <0>\"{documentTitle}\"</0> zu löschen"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "Sie sind dabei, <0>\"{title}\"</0> zu löschen"
@@ -12500,10 +12586,6 @@ msgstr "Sie stehen kurz davor, die folgende Team-E-Mail von <0>{teamName}</0> zu
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "Sie sind dabei, allen Organisationsmitgliedern Zugriff auf dieses Team im Rahmen ihrer Organisationsrolle zu gewähren."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "Sie sind dabei, <0>\"{documentTitle}\"</0> zu verstecken"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "Sie sind dabei, <0>\"{title}\"</0> auszublenden"
@@ -12555,6 +12637,14 @@ msgstr "Sie sind dabei, den folgenden Benutzer von <0>{0}</0> zu entfernen."
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "Sie stehen kurz davor, den folgenden Benutzer aus <0>{teamName}</0> zu entfernen."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "Du bist dabei, den folgenden Benutzer aus der Organisation <0>{organisationName}</0> zu entfernen:"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "Sie sind dabei, den folgenden Benutzer aus dem Team <0>{teamName}</0> zu entfernen:"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +12967,10 @@ msgstr "Sie haben die maximale Anzahl an Teams für Ihren Plan erreicht. Bitte k
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "Sie haben Ihr Dokumentenlimit für diesen Monat erreicht. Bitte aktualisieren Sie Ihren Plan."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "Sie haben das Dokumentlimit für diesen Tarif erreicht."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13327,7 +13421,7 @@ msgstr "Ihr Dokument wurde als Vorlage gespeichert."
msgid "Your document has been sent successfully."
msgstr "Ihr Dokument wurde erfolgreich gesendet."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "Ihr Dokument wurde erfolgreich dupliziert."
@@ -13394,10 +13488,6 @@ msgstr "Ihr Kuvert wurde erfolgreich verteilt."
msgid "Your envelope has been resent successfully."
msgstr "Ihr Kuvert wurde erfolgreich erneut gesendet."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "Ihr Kuvert wurde erfolgreich dupliziert."
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "Ihre vorhandenen Tokens"
@@ -13494,14 +13584,10 @@ msgstr "Ihr Team wurde erfolgreich aktualisiert."
msgid "Your template has been created successfully"
msgstr "Ihre Vorlage wurde erfolgreich erstellt"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "Ihre Vorlage wurde erfolgreich dupliziert."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "Ihre Vorlage wurde erfolgreich gelöscht."
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
msgstr "Deine Vorlage wurde erfolgreich umbenannt."
@@ -13515,10 +13601,6 @@ msgstr "Ihre Vorlage wurde erfolgreich aktualisiert"
msgid "Your template has been uploaded successfully."
msgstr "Ihre Vorlage wurde erfolgreich hochgeladen."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "Ihre Vorlage wird dupliziert."
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "Ihre Vorlagen"
+168 -86
View File
@@ -40,10 +40,6 @@ msgstr "“{documentName}” has been signed"
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}” was signed by all signers"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" has been successfully deleted"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
@@ -52,6 +48,10 @@ msgstr "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sig
msgid "\"{title}\" has been successfully deleted"
msgstr "\"{title}\" has been successfully deleted"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "\"{title}\" has been successfully hidden"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Team Name\" has invited you to sign \"example document\"."
@@ -296,14 +296,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, one {Day} other {Days}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, one {Month} other {Months}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, one {Week} other {Weeks}}"
@@ -1138,6 +1141,7 @@ msgstr "Action"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1483,7 +1487,6 @@ msgstr "All email domains have been synced successfully"
msgid "All Folders"
msgstr "All Folders"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "All inserted signatures will be voided"
@@ -1496,7 +1499,6 @@ msgstr "All items must be of the same type."
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "All recipients have signed. The document is being processed and you will receive an email copy shortly."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1594,6 +1596,8 @@ msgstr "An email containing an invitation will be sent to each member."
msgid "An email with this address already exists."
msgstr "An email with this address already exists."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1685,10 +1689,6 @@ msgstr "An error occurred while disabling direct link signing."
msgid "An error occurred while disabling the user."
msgstr "An error occurred while disabling the user."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "An error occurred while duplicating template."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "An error occurred while enabling direct link signing."
@@ -1928,6 +1928,7 @@ msgstr "Approve"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "Approve Document"
@@ -1991,7 +1992,6 @@ msgstr "Are you sure you wish to delete this organisation?"
msgid "Are you sure you wish to delete this team?"
msgstr "Are you sure you wish to delete this team?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2024,6 +2024,7 @@ msgstr "Assist"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "Assist Document"
@@ -2297,7 +2298,6 @@ msgstr "By accepting this request, you grant {0} the following permissions:"
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "By accepting this request, you will be granting <0>{teamName}</0> access to:"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "By deleting this document, the following will occur:"
@@ -2331,16 +2331,16 @@ msgid "Can't find someone?"
msgstr "Can't find someone?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2396,9 +2396,7 @@ msgstr "Can't find someone?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2774,6 +2772,10 @@ msgstr "Configure general settings for the template."
msgid "Configure security settings for the document."
msgstr "Configure security settings for the document."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "Configure signing reminder settings for the document."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "Configure template"
@@ -2802,6 +2804,10 @@ msgstr "Configure the team roles for each group"
msgid "Configure the team roles for each member"
msgstr "Configure the team roles for each member"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2874,10 +2880,12 @@ msgid "Continue"
msgstr "Continue"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "Continue by approving the document."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "Continue by assisting with the document."
@@ -2886,10 +2894,12 @@ msgid "Continue by downloading the document."
msgstr "Continue by downloading the document."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "Continue by signing the document."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "Continue by viewing the document."
@@ -2922,6 +2932,10 @@ msgstr "Controls the formatting of the message that will be sent when inviting a
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
@@ -3308,6 +3322,10 @@ msgstr "Custom {0} MB file"
msgid "Custom duration"
msgstr "Custom duration"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "Custom interval"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "Custom Organisation Groups"
@@ -3409,6 +3427,10 @@ msgstr "Default settings applied to this team. Inherited values come from the or
msgid "Default Signature Settings"
msgstr "Default Signature Settings"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "Default Signing Reminders"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "Default Time Zone"
@@ -3432,13 +3454,11 @@ msgstr "Delegate document ownership"
msgid "Delegate Document Ownership"
msgstr "Delegate Document Ownership"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "delete"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3452,7 +3472,6 @@ msgstr "delete"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3808,14 +3827,6 @@ msgstr "DKIM records generated. Please add the DNS records to verify your domain
msgid "DNS Records"
msgstr "DNS Records"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "Do you want to delete this template?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "Do you want to duplicate this template?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Documenso License"
@@ -3941,7 +3952,6 @@ msgid "Document Creation"
msgstr "Document Creation"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3972,7 +3982,7 @@ msgstr "Document Distribution Method"
msgid "Document draft"
msgstr "Document draft"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "Document Duplicated"
@@ -3989,6 +3999,10 @@ msgstr "Document external ID updated"
msgid "Document found in your account"
msgstr "Document found in your account"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "Document hidden"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4104,7 +4118,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "Document signing auth updated"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "Document signing process will be cancelled"
@@ -4183,7 +4196,6 @@ msgstr "Document visibility updated"
msgid "Document Volume"
msgstr "Document Volume"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "Document will be permanently deleted"
@@ -4279,6 +4291,10 @@ msgstr "Domain re-registered"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "Don't have an account? <0>Sign up</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "Don't repeat"
#: 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)"
@@ -4390,10 +4406,7 @@ msgstr "Dropdown Settings"
msgid "Dropdown values"
msgstr "Dropdown values"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4776,6 +4789,7 @@ msgstr "Enable team API tokens to delegate document ownership to another team me
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "Enabled"
@@ -4901,10 +4915,6 @@ msgstr "Enterprise"
msgid "Envelope distributed"
msgstr "Envelope distributed"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "Envelope Duplicated"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4958,7 +4968,6 @@ msgstr "Envelope updated"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5660,6 +5669,10 @@ msgstr "Here's how it works:"
msgid "Hey Im Timur"
msgstr "Hey Im Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Hi {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Hi {userName},"
@@ -5672,7 +5685,6 @@ msgstr "Hi {userName}, you need to enter a verification code to complete the doc
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "Hi, {userName} <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5861,6 +5873,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"
@@ -6563,6 +6576,14 @@ msgstr "Member"
msgid "Member Count"
msgstr "Member Count"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "Member has been removed from the organisation."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "Member has been removed from the team."
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "Member Since"
@@ -6934,6 +6955,10 @@ msgstr "No recipients were detected in your document."
msgid "No recipients with this role"
msgstr "No recipients with this role"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "No reminders"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7083,7 +7108,6 @@ msgstr "On this page, you can create and manage API tokens. See our <0>Documenta
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "On this page, you can create new Webhooks and manage the existing ones."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7649,7 +7673,6 @@ msgstr "Please confirm your email"
msgid "Please confirm your email address"
msgstr "Please confirm your email address"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "Please contact support if you would like to revert this action."
@@ -7708,13 +7731,11 @@ msgstr "Please note that anyone who signs in through your portal will be added t
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "Please note that this action is <0>irreversible</0>."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
@@ -7723,10 +7744,6 @@ msgstr "Please note that this action is <0>irreversible</0>. Once confirmed, thi
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
@@ -7787,9 +7804,7 @@ msgstr "Please try again and make sure you enter the correct email address."
msgid "Please try again or contact our support."
msgstr "Please try again or contact our support."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "Please type {0} to confirm"
@@ -8179,7 +8194,6 @@ msgstr "Recipients that will be automatically added to new documents."
msgid "Recipients will be able to sign the document once sent"
msgstr "Recipients will be able to sign the document once sent"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "Recipients will still retain their copy of the document"
@@ -8271,16 +8285,32 @@ msgstr "Reload"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "Remembered your password? <0>Sign In</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "Reminder to {action} {documentName}"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "Reminder: {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "Reminder: {0} invited you to {recipientActionVerb} a document"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "Reminder: Please {0} your document<0/>\"{documentName}\""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "Reminder: Please {recipientActionVerb} the document \"{0}\""
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "Reminder: Please {recipientActionVerb} this document"
@@ -8289,6 +8319,12 @@ msgstr "Reminder: Please {recipientActionVerb} this document"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Reminder: Please {recipientActionVerb} your document"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "Reminders"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8315,6 +8351,11 @@ msgstr "Remove"
msgid "Remove email domain"
msgstr "Remove email domain"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "Remove member"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8324,6 +8365,10 @@ msgstr "Remove organisation group"
msgid "Remove organisation member"
msgstr "Remove organisation member"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "Remove Organisation Member"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "Remove recipient"
@@ -8337,6 +8382,10 @@ msgstr "Remove team email"
msgid "Remove team member"
msgstr "Remove team member"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "Remove Team Member"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8988,6 +9037,10 @@ msgstr "Send documents to recipients immediately"
msgid "Send Envelope"
msgstr "Send Envelope"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "Send first reminder after"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "Send on Behalf of Team"
@@ -9151,6 +9204,7 @@ msgstr "Sign document"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "Sign Document"
@@ -9349,6 +9403,10 @@ msgstr "Signing links have been generated for this document."
msgid "Signing order is enabled."
msgstr "Signing order is enabled."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "Signing Reminders"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "Signing Status"
@@ -9400,8 +9458,6 @@ msgstr "Skip"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9414,7 +9470,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9660,8 +9715,10 @@ msgid "Subscription Status"
msgstr "Subscription Status"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9986,7 +10043,7 @@ msgstr "Template (Legacy)"
msgid "Template Created"
msgstr "Template Created"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "Template deleted"
@@ -9994,9 +10051,9 @@ msgstr "Template deleted"
msgid "Template document uploaded"
msgstr "Template document uploaded"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
msgstr "Template duplicated"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "Template Duplicated"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
msgid "Template Editor"
@@ -10010,6 +10067,10 @@ msgstr "Template has been removed from your public profile."
msgid "Template has been updated."
msgstr "Template has been updated."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "Template hidden"
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "Template ID (Legacy)"
@@ -10179,6 +10240,10 @@ msgstr "The direct link has been copied to your clipboard"
msgid "The display name for this email address"
msgstr "The display name for this email address"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "The Document has been deleted successfully."
@@ -10219,7 +10284,6 @@ msgstr "The document ownership was delegated to {0} on behalf of {1}"
msgid "The document was created but could not be sent to recipients."
msgstr "The document was created but could not be sent to recipients."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "The document will be hidden from your account"
@@ -10448,6 +10512,10 @@ msgstr "The team you are looking for may have been removed, renamed or may have
msgid "The template has been moved successfully."
msgstr "The template has been moved successfully."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "The template or one of its recipients could not be found."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "The template will be removed from your profile"
@@ -10525,6 +10593,10 @@ msgstr "The webhook was successfully created."
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "The webhook you are looking for may have been removed, renamed or may have never existed."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "Then repeat every"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "There are no active drafts at the current moment. You can upload a document to start drafting."
@@ -10567,6 +10639,8 @@ msgstr "This action is irreversible. Please ensure you have informed the user be
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "This action is not reversible. Please be certain."
@@ -10592,7 +10666,6 @@ msgstr "This document can not be recovered, if you would like to dispute the rea
msgid "This document cannot be changed"
msgstr "This document cannot be changed"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "This document could not be deleted at this time. Please try again."
@@ -10601,7 +10674,6 @@ msgstr "This document could not be deleted at this time. Please try again."
msgid "This document could not be downloaded at this time. Please try again."
msgstr "This document could not be downloaded at this time. Please try again."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "This document could not be duplicated at this time. Please try again."
@@ -10767,10 +10839,14 @@ msgstr "This signer has already signed the document."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "This team, and any associated data excluding billing invoices will be permanently deleted."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "This template could not be deleted at this time. Please try again."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "This template could not be duplicated at this time. Please try again."
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
@@ -10874,6 +10950,10 @@ msgstr "Title cannot be empty"
msgid "To accept this invitation you must create an account."
msgstr "To accept this invitation you must create an account."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "To add members to this team, you must first add them to the organisation."
@@ -11813,6 +11893,7 @@ msgstr "View document"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11979,6 +12060,11 @@ msgstr "We couldn't create a Stripe customer. Please try again."
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/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "We couldn't remove this member. Please try again later."
#: 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."
@@ -12241,6 +12327,10 @@ msgstr "We were unable to update your document preferences at this time, please
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "We were unable to update your email preferences at this time, please try again later"
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
msgstr "We were unable to verify that you're human. Please try again."
#: 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-signing/document-signing-auth-password.tsx
@@ -12474,10 +12564,6 @@ msgstr "You are about to complete signing the following document"
msgid "You are about to complete viewing the following document"
msgstr "You are about to complete viewing the following document"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "You are about to delete <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "You are about to delete <0>\"{title}\"</0>"
@@ -12495,10 +12581,6 @@ msgstr "You are about to delete the following team email from <0>{teamName}</0>.
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "You are about to give all organisation members access to this team under their organisation role."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "You are about to hide <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "You are about to hide <0>\"{title}\"</0>"
@@ -12550,6 +12632,14 @@ msgstr "You are about to remove the following user from <0>{0}</0>."
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "You are about to remove the following user from <0>{teamName}</0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "You are about to remove the following user from the team <0>{teamName}</0>:"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12872,6 +12962,10 @@ msgstr "You have reached the maximum number of teams for your plan. Please conta
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "You have reached your document limit for this month. Please upgrade your plan."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "You have reached your document limit for this plan."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13322,7 +13416,7 @@ msgstr "Your document has been saved as a template."
msgid "Your document has been sent successfully."
msgstr "Your document has been sent successfully."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "Your document has been successfully duplicated."
@@ -13389,10 +13483,6 @@ msgstr "Your envelope has been distributed successfully."
msgid "Your envelope has been resent successfully."
msgstr "Your envelope has been resent successfully."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "Your envelope has been successfully duplicated."
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "Your existing tokens"
@@ -13489,13 +13579,9 @@ msgstr "Your team has been successfully updated."
msgid "Your template has been created successfully"
msgstr "Your template has been created successfully"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
msgstr "Your template has been duplicated successfully."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "Your template has been successfully deleted."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "Your template has been successfully duplicated."
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
@@ -13510,10 +13596,6 @@ msgstr "Your template has been updated successfully"
msgid "Your template has been uploaded successfully."
msgstr "Your template has been uploaded successfully."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "Your template will be duplicated."
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "Your templates"
+168 -86
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: es\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-04-22 14:34\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -45,10 +45,6 @@ msgstr "“{documentName}” ha sido firmado"
msgid "“{documentName}” was signed by all signers"
msgstr "\"{documentName}\" fue firmado por todos los firmantes"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" ha sido eliminado con éxito"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\" en nombre de \"Team Name\" te ha invitado a firmar \"example document\"."
@@ -57,6 +53,10 @@ msgstr "\"{placeholderEmail}\" en nombre de \"Team Name\" te ha invitado a firma
msgid "\"{title}\" has been successfully deleted"
msgstr "\"{title}\" ha sido eliminado con éxito"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "\"{title}\" ha sido ocultado con éxito"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Team Name\" te ha invitado a firmar \"example document\"."
@@ -301,14 +301,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, one {Día} other {Días}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, one {Mes} other {Meses}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, one {Semana} other {Semanas}}"
@@ -1143,6 +1146,7 @@ msgstr "Acción"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1488,7 +1492,6 @@ msgstr "Todos los dominios de correo electrónico se han sincronizado exitosamen
msgid "All Folders"
msgstr "Todas las carpetas"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "Todas las firmas insertadas serán anuladas"
@@ -1501,7 +1504,6 @@ msgstr "Todos los elementos deben ser del mismo tipo."
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "Todos los destinatarios han firmado. El documento se está procesando y recibirás una copia por correo electrónico en breve."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1599,6 +1601,8 @@ msgstr "Un correo electrónico que contiene una invitación se enviará a cada m
msgid "An email with this address already exists."
msgstr "Ya existe un correo electrónico con esta dirección."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1694,6 @@ msgstr "Ocurrió un error al desactivar la firma de enlace directo."
msgid "An error occurred while disabling the user."
msgstr "Se produjo un error al deshabilitar al usuario."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "Ocurrió un error al duplicar la plantilla."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "Ocurrió un error al habilitar la firma de enlace directo."
@@ -1933,6 +1933,7 @@ msgstr "Aprobar"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "Aprobar Documento"
@@ -1996,7 +1997,6 @@ msgstr "¿Está seguro de que desea eliminar esta organización?"
msgid "Are you sure you wish to delete this team?"
msgstr "¿Estás seguro de que deseas eliminar este equipo?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2029,6 +2029,7 @@ msgstr "Asistir"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "Asistir Documento"
@@ -2302,7 +2303,6 @@ msgstr "Al aceptar esta solicitud, otorgas a {0} los siguientes permisos:"
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "Al aceptar esta solicitud, estarás concediendo a <0>{teamName}</0> acceso a:"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "Al eliminar este documento, ocurrirá lo siguiente:"
@@ -2336,16 +2336,16 @@ msgid "Can't find someone?"
msgstr "¿No puedes encontrar a alguien?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2401,7 @@ msgstr "¿No puedes encontrar a alguien?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2777,10 @@ msgstr "Configurar ajustes generales para la plantilla."
msgid "Configure security settings for the document."
msgstr "Configura los ajustes de seguridad para el documento."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "Configura los ajustes de recordatorio de firma para el documento."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "Configurar plantilla"
@@ -2807,6 +2809,10 @@ msgstr "Configura los roles del equipo para cada grupo"
msgid "Configure the team roles for each member"
msgstr "Configura los roles del equipo para cada miembro"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "Configura cuándo y con qué frecuencia se envían correos electrónicos de recordatorio a los destinatarios que aún no han completado la firma. Usa la configuración predeterminada del equipo cuando se establece en heredar."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2885,12 @@ msgid "Continue"
msgstr "Continuar"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "Continúa aprobando el documento."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "Continúa asistiendo con el documento."
@@ -2891,10 +2899,12 @@ msgid "Continue by downloading the document."
msgstr "Continúa descargando el documento."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "Continúa firmando el documento."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "Continúa viendo el documento."
@@ -2927,6 +2937,10 @@ msgstr "Controla el formato del mensaje que se enviará al invitar a un destinat
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "Controla el idioma para el documento, incluyendo el idioma a utilizar para las notificaciones de correo electrónico y el certificado final que se genera y adjunta al documento."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "Controla cuándo y con qué frecuencia se envían correos electrónicos de recordatorio a los destinatarios que aún no han completado la firma."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "Controla si los registros de auditoría se incluirán en el documento al descargarlo. Los registros de auditoría aún se pueden descargar por separado desde la página de registros."
@@ -3313,6 +3327,10 @@ msgstr "Archivo personalizado de {0} MB"
msgid "Custom duration"
msgstr "Duración personalizada"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "Intervalo personalizado"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "Grupos de Organización Personalizados"
@@ -3414,6 +3432,10 @@ msgstr "Configuración predeterminada aplicada a este equipo. Los valores hereda
msgid "Default Signature Settings"
msgstr "Configuraciones de Firma por Defecto"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "Recordatorios de firma predeterminados"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "Zona horaria predeterminada"
@@ -3437,13 +3459,11 @@ msgstr "Delegar la propiedad del documento"
msgid "Delegate Document Ownership"
msgstr "Delegar la propiedad del documento"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "eliminar"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3477,6 @@ msgstr "eliminar"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3813,14 +3832,6 @@ msgstr "Registros DKIM generados. Por favor, añade los registros DNS para verif
msgid "DNS Records"
msgstr "Registros DNS"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "¿Desea eliminar esta plantilla?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "¿Desea duplicar esta plantilla?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Licencia de Documenso"
@@ -3946,7 +3957,6 @@ msgid "Document Creation"
msgstr "Creación de documento"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3977,7 +3987,7 @@ msgstr "Método de distribución de documentos"
msgid "Document draft"
msgstr "Borrador de documento"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "Documento duplicado"
@@ -3994,6 +4004,10 @@ msgstr "Se actualizó el ID externo del documento"
msgid "Document found in your account"
msgstr "Documento encontrado en tu cuenta"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "Documento oculto"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4109,7 +4123,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "Se actualizó la autenticación de firma del documento"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "El proceso de firma del documento será cancelado"
@@ -4188,7 +4201,6 @@ msgstr "Visibilidad del documento actualizada"
msgid "Document Volume"
msgstr "Volumen del documento"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "El documento será eliminado permanentemente"
@@ -4284,6 +4296,10 @@ msgstr "Dominio registrado de nuevo"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "¿No tienes una cuenta? <0>Regístrate</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "No repetir"
#: 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)"
@@ -4395,10 +4411,7 @@ msgstr "Configuración de Menú Desplegable"
msgid "Dropdown values"
msgstr "Valores del Menú Desplegable"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4781,6 +4794,7 @@ msgstr "Habilita los tokens de API del equipo para delegar la propiedad del docu
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "Habilitado"
@@ -4906,10 +4920,6 @@ msgstr "Enterprise"
msgid "Envelope distributed"
msgstr "Sobre distribuido"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "Sobre Duplicado"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4963,7 +4973,6 @@ msgstr "Sobre actualizado"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5665,6 +5674,10 @@ msgstr "Así es como funciona:"
msgid "Hey Im Timur"
msgstr "Hola, soy Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Hola, {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Hola, {userName},"
@@ -5677,7 +5690,6 @@ msgstr "Hola {userName}, necesitas introducir un código de verificación para c
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "Hola, {userName} <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5866,6 +5878,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"
@@ -6568,6 +6581,14 @@ msgstr "Miembro"
msgid "Member Count"
msgstr "Conteo de Miembros"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "El miembro ha sido eliminado de la organización."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "El miembro ha sido eliminado del equipo."
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "Miembro desde"
@@ -6939,6 +6960,10 @@ msgstr "No se detectaron destinatarios en tu documento."
msgid "No recipients with this role"
msgstr "No hay destinatarios con este rol"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "Sin recordatorios"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7088,7 +7113,6 @@ msgstr "En esta página, puedes crear y gestionar tokens de API. Consulta nuestr
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "En esta página, puedes editar el webhook y sus configuraciones."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7654,7 +7678,6 @@ msgstr "Por favor confirma tu correo electrónico"
msgid "Please confirm your email address"
msgstr "Por favor confirma tu dirección de correo electrónico"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "Por favor, contacta al soporte si deseas revertir esta acción."
@@ -7713,13 +7736,11 @@ msgstr "Tenga en cuenta que cualquier persona que inicie sesión a través de su
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Por favor, ten en cuenta que proceder eliminará el destinatario de enlace directo y lo convertirá en un marcador de posición."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "Por favor, ten en cuenta que esta acción es <0>irreversible</0>."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "Por favor, ten en cuenta que esta acción es <0>irreversible</0>. Una vez confirmada, este documento será eliminado permanentemente."
@@ -7728,10 +7749,6 @@ msgstr "Por favor, ten en cuenta que esta acción es <0>irreversible</0>. Una ve
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "Ten en cuenta que esta acción es <0>irreversible</0>. Una vez confirmada, esta plantilla se eliminará permanentemente."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Por favor, ten en cuenta que esta acción es irreversible. Una vez confirmada, tu plantilla será eliminada permanentemente."
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "Por favor, ten en cuenta que esta acción es irreversible. Una vez confirmada, tu token será eliminado permanentemente."
@@ -7792,9 +7809,7 @@ msgstr "Por favor, intenta de nuevo y asegúrate de ingresar la dirección de co
msgid "Please try again or contact our support."
msgstr "Por favor, inténtalo de nuevo o contacta a nuestro soporte."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "Por favor, escriba {0} para confirmar"
@@ -8184,7 +8199,6 @@ msgstr "Destinatarios que se agregarán automáticamente a los nuevos documentos
msgid "Recipients will be able to sign the document once sent"
msgstr "Los destinatarios podrán firmar el documento una vez enviado"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "Los destinatarios aún conservarán su copia del documento"
@@ -8276,16 +8290,32 @@ msgstr "Recargar"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "¿Recordaste tu contraseña? <0>Iniciar sesión</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "Recordatorio para {action} {documentName}"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "Recordatorio: {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "Recordatorio: {0} te invitó a {recipientActionVerb} un documento"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "Recordatorio: Por favor {0} tu documento<0/>\"{documentName}\""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "Recordatorio: Por favor {recipientActionVerb} el documento \"{0}\""
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "Recordatorio: Por favor {recipientActionVerb} este documento"
@@ -8294,6 +8324,12 @@ msgstr "Recordatorio: Por favor {recipientActionVerb} este documento"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Recordatorio: Por favor {recipientActionVerb} tu documento"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "Recordatorios"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8320,6 +8356,11 @@ msgstr "Eliminar"
msgid "Remove email domain"
msgstr "Eliminar dominio de correo electrónico"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "Eliminar miembro"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8329,6 +8370,10 @@ msgstr "Eliminar grupo de organización"
msgid "Remove organisation member"
msgstr "Eliminar miembro de la organización"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "Eliminar miembro de la organización"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "Eliminar destinatario"
@@ -8342,6 +8387,10 @@ msgstr "Eliminar correo electrónico del equipo"
msgid "Remove team member"
msgstr "Eliminar miembro del equipo"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "Eliminar miembro del equipo"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8993,6 +9042,10 @@ msgstr "Enviar documentos a los destinatarios inmediatamente"
msgid "Send Envelope"
msgstr "Enviar sobre (envelope)"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "Enviar el primer recordatorio después de"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "Enviar en nombre del equipo"
@@ -9156,6 +9209,7 @@ msgstr "Firmar documento"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "Firmar Documento"
@@ -9354,6 +9408,10 @@ msgstr "Se han generado enlaces de firma para este documento."
msgid "Signing order is enabled."
msgstr "El orden de firma está habilitado."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "Recordatorios de firma"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "Estado de firma"
@@ -9405,8 +9463,6 @@ msgstr "Omitir"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Algunos firmantes no han sido asignados a un campo de firma. Asigne al menos 1 campo de firma a cada firmante antes de continuar."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9419,7 +9475,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9665,8 +9720,10 @@ msgid "Subscription Status"
msgstr "Estado de la suscripción"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10048,7 @@ msgstr "Plantilla (Legado)"
msgid "Template Created"
msgstr "Plantilla Creada"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "Plantilla eliminada"
@@ -9999,8 +10056,8 @@ msgstr "Plantilla eliminada"
msgid "Template document uploaded"
msgstr "Documento de plantilla subido"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "Plantilla duplicada"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
@@ -10015,6 +10072,10 @@ msgstr "La plantilla ha sido eliminada de tu perfil público."
msgid "Template has been updated."
msgstr "La plantilla ha sido actualizada."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "Plantilla oculta"
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "ID de plantilla (Legado)"
@@ -10184,6 +10245,10 @@ msgstr "El enlace directo ha sido copiado a tu portapapeles"
msgid "The display name for this email address"
msgstr "El nombre para mostrar para esta dirección de correo electrónico"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "No se pudo crear el documento debido a información faltante o no válida. Revise los destinatarios y los campos de la plantilla."
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "El documento se ha eliminado correctamente."
@@ -10224,7 +10289,6 @@ msgstr "La propiedad del documento se delegó a {0} en nombre de {1}"
msgid "The document was created but could not be sent to recipients."
msgstr "El documento fue creado pero no se pudo enviar a los destinatarios."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "El documento será ocultado de tu cuenta"
@@ -10453,6 +10517,10 @@ msgstr "El equipo que estás buscando puede haber sido eliminado, renombrado o q
msgid "The template has been moved successfully."
msgstr "La plantilla se ha movido exitosamente."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "No se pudo encontrar la plantilla o uno de sus destinatarios."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "La plantilla será eliminada de tu perfil"
@@ -10530,6 +10598,10 @@ msgstr "El webhook fue creado con éxito."
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "El webhook que estás buscando puede haber sido eliminado, renombrado o quizás nunca existió."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "Luego repetir cada"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "No hay borradores activos en este momento. Puedes subir un documento para comenzar a redactar."
@@ -10572,6 +10644,8 @@ msgstr "Esta acción es irreversible. Asegúrese de haber informado al usuario a
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "Esta acción no es reversible. Por favor, asegúrate."
@@ -10597,7 +10671,6 @@ msgstr "Este documento no se puede recuperar, si deseas impugnar la razón para
msgid "This document cannot be changed"
msgstr "Este documento no se puede cambiar"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "Este documento no se pudo eliminar en este momento. Por favor, inténtalo de nuevo."
@@ -10606,7 +10679,6 @@ msgstr "Este documento no se pudo eliminar en este momento. Por favor, inténtal
msgid "This document could not be downloaded at this time. Please try again."
msgstr "Este documento no pudo ser descargado en este momento. Por favor, inténtelo de nuevo."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Este documento no se pudo duplicar en este momento. Por favor, inténtalo de nuevo."
@@ -10772,10 +10844,14 @@ msgstr "Este firmante ya ha firmado el documento."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Este equipo, y cualquier dato asociado, excluyendo las facturas de facturación, serán eliminados permanentemente."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "Esta plantilla no se pudo eliminar en este momento. Por favor, inténtalo de nuevo."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "No se ha podido duplicar esta plantilla en este momento. Por favor, inténtelo de nuevo."
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "Esta plantilla utiliza inserción de campos heredada, recomendamos usar el nuevo método para resultados más precisos."
@@ -10879,6 +10955,10 @@ msgstr "El título no puede estar vacío"
msgid "To accept this invitation you must create an account."
msgstr "Para aceptar esta invitación debes crear una cuenta."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "Para añadir miembros a este equipo, primero deben ser invitados a la organización. Solo los administradores y gestores de la organización pueden invitar a nuevos miembros; ponte en contacto con uno de ellos para que invite a los miembros en tu nombre."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "Para añadir miembros a este equipo, primero debes añadirlos a la organización."
@@ -11818,6 +11898,7 @@ msgstr "Ver documento"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11984,6 +12065,11 @@ msgstr "No pudimos crear un cliente de Stripe. Por favor, intente nuevamente."
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/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "No hemos podido eliminar a este miembro. Vuelve a intentarlo más tarde."
#: 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."
@@ -12246,6 +12332,10 @@ msgstr "No pudimos actualizar tus preferencias de documento en este momento, por
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "No pudimos actualizar tus preferencias de correo electrónico en este momento, por favor intenta de nuevo más tarde."
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
msgstr "No pudimos verificar que eres humano. Inténtalo de nuevo."
#: 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-signing/document-signing-auth-password.tsx
@@ -12479,10 +12569,6 @@ msgstr "Está a punto de completar la firma del siguiente documento"
msgid "You are about to complete viewing the following document"
msgstr "Está a punto de completar la visualización del siguiente documento"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "Estás a punto de eliminar <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "Estás a punto de eliminar <0>\"{title}\"</0>"
@@ -12500,10 +12586,6 @@ msgstr "Estás a punto de eliminar el siguiente correo electrónico del equipo d
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "Estás a punto de dar acceso a todos los miembros de la organización a este equipo bajo su rol de organización."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "Estás a punto de ocultar <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "Estás a punto de ocultar <0>\"{title}\"</0>"
@@ -12555,6 +12637,14 @@ msgstr "Estás a punto de eliminar el siguiente usuario de <0>{0}</0>."
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "Estás a punto de eliminar al siguiente usuario de <0>{teamName}</0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "Estás a punto de eliminar al siguiente usuario de la organización <0>{organisationName}</0>:"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "Está a punto de eliminar al siguiente usuario del equipo <0>{teamName}</0>:"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +12967,10 @@ msgstr "Has alcanzado el número máximo de equipos para tu plan. Por favor, con
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "Ha alcanzado su límite de documentos para este mes. Por favor, actualice su plan."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "Ha alcanzado su límite de documentos para este plan."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13327,7 +13421,7 @@ msgstr "Tu documento se ha guardado como plantilla."
msgid "Your document has been sent successfully."
msgstr "Tu documento ha sido enviado con éxito."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "Tu documento ha sido duplicado con éxito."
@@ -13394,10 +13488,6 @@ msgstr "Su sobre ha sido distribuido exitosamente."
msgid "Your envelope has been resent successfully."
msgstr "Su sobre ha sido reenviado exitosamente."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "Su sobre ha sido duplicado exitosamente."
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "Tus tokens existentes"
@@ -13494,13 +13584,9 @@ msgstr "Tu equipo ha sido actualizado con éxito."
msgid "Your template has been created successfully"
msgstr "Tu plantilla se ha creado exitosamente"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
msgstr "Tu plantilla ha sido duplicada con éxito."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "Tu plantilla ha sido eliminada con éxito."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "Su plantilla se ha duplicado correctamente."
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
@@ -13515,10 +13601,6 @@ msgstr "Tu plantilla se ha actualizado correctamente"
msgid "Your template has been uploaded successfully."
msgstr "Su plantilla ha sido subida exitosamente."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "Tu plantilla será duplicada."
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "Tus plantillas"
+167 -85
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-04-22 14:34\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -45,10 +45,6 @@ msgstr "« {documentName} » a été signé"
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}” a été signé par tous les signataires"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" a été supprimé avec succès"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\" représentant \"Team Name\" vous a invité à signer \"example document\"."
@@ -57,6 +53,10 @@ msgstr "\"{placeholderEmail}\" représentant \"Team Name\" vous a invité à sig
msgid "\"{title}\" has been successfully deleted"
msgstr "\"{title}\" a été supprimé avec succès"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "\"{title}\" a été masqué avec succès"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Team Name\" vous a invité à signer \"example document\"."
@@ -301,14 +301,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, one {Jour} other {Jours}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, one {Mois} other {Mois}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, one {Semaine} other {Semaines}}"
@@ -1143,6 +1146,7 @@ msgstr "Action"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1488,7 +1492,6 @@ msgstr "Tous les domaines email ont été synchronisés avec succès"
msgid "All Folders"
msgstr "Tous les dossiers"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "Toutes les signatures insérées seront annulées"
@@ -1501,7 +1504,6 @@ msgstr "Tous les éléments doivent être du même type."
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "Tous les destinataires ont signé. Le document est en cours de traitement et vous recevrez une copie par e-mail sous peu."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1599,6 +1601,8 @@ msgstr "Un e-mail contenant une invitation sera envoyé à chaque membre."
msgid "An email with this address already exists."
msgstr "Un email avec cette adresse existe déjà."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1694,6 @@ msgstr "Une erreur est survenue lors de la désactivation de la signature par li
msgid "An error occurred while disabling the user."
msgstr "Une erreur est survenue lors de la désactivation de l'utilisateur."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "Une erreur est survenue lors de la duplication du modèle."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "Une erreur est survenue lors de l'activation de la signature par lien direct."
@@ -1933,6 +1933,7 @@ msgstr "Approuver"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "Approuver le document"
@@ -1996,7 +1997,6 @@ msgstr "Êtes-vous sûr de vouloir supprimer cette organisation?"
msgid "Are you sure you wish to delete this team?"
msgstr "Êtes-vous sûr de vouloir supprimer cette équipe ?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2029,6 +2029,7 @@ msgstr "Assister"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "Assister le Document"
@@ -2302,7 +2303,6 @@ msgstr "En acceptant cette demande, vous accordez à {0} les autorisations suiva
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "En acceptant cette demande, vous accorderez à <0>{teamName}</0> l'accès à :"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "En supprimant ce document, les éléments suivants se produiront :"
@@ -2336,16 +2336,16 @@ msgid "Can't find someone?"
msgstr "Vous ne trouvez pas quelquun ?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2401,7 @@ msgstr "Vous ne trouvez pas quelquun ?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2777,10 @@ msgstr "Configurer les paramètres généraux pour le modèle."
msgid "Configure security settings for the document."
msgstr "Configurer les paramètres de sécurité pour le document."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "Configurer les paramètres de rappel de signature pour le document."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "Configurer le modèle"
@@ -2807,6 +2809,10 @@ msgstr "Configurez les rôles d'équipe pour chaque groupe"
msgid "Configure the team roles for each member"
msgstr "Configurez les rôles d'équipe pour chaque membre"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "Configurer quand et à quelle fréquence des e-mails de rappel sont envoyés aux destinataires qui nont pas encore terminé la signature. Utilise le paramètre par défaut de l’équipe lorsquil est défini sur hériter."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2885,12 @@ msgid "Continue"
msgstr "Continuer"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "Continuer en approuvant le document."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "Continuez en aidant avec le document."
@@ -2891,10 +2899,12 @@ msgid "Continue by downloading the document."
msgstr "Continuer en téléchargeant le document."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "Continuer en signant le document."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "Continuer en consultant le document."
@@ -2927,6 +2937,10 @@ msgstr "Contrôle le formatage du message qui sera envoyé lors de l'invitation
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "Contrôle la langue du document, y compris la langue à utiliser pour les notifications par email et le certificat final qui est généré et attaché au document."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "Définit quand et à quelle fréquence des e-mails de rappel sont envoyés aux destinataires qui nont pas encore terminé la signature."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "Contrôle si les journaux d'audit seront inclus dans le document lorsqu'il est téléchargé. Les journaux d'audit peuvent toujours être téléchargés séparément sur la page des journaux."
@@ -3313,6 +3327,10 @@ msgstr "Fichier personnalisé de {0} Mo"
msgid "Custom duration"
msgstr "Durée personnalisée"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "Intervalle personnalisé"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "Groupes d'organisation personnalisés"
@@ -3414,6 +3432,10 @@ msgstr "Paramètres par défaut appliqués à cette équipe. Les valeurs hérit
msgid "Default Signature Settings"
msgstr "Paramètres de Signature par Défaut"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "Rappels de signature par défaut"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "Fuseau horaire par défaut"
@@ -3437,13 +3459,11 @@ msgstr "Déléguer la propriété du document"
msgid "Delegate Document Ownership"
msgstr "Déléguer la propriété du document"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "supprimer"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3477,6 @@ msgstr "supprimer"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3813,14 +3832,6 @@ msgstr "Enregistrements DKIM générés. Veuillez ajouter les enregistrements DN
msgid "DNS Records"
msgstr "Enregistrements DNS"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "Voulez-vous supprimer ce modèle ?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "Voulez-vous dupliquer ce modèle ?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Licence Documenso"
@@ -3946,7 +3957,6 @@ msgid "Document Creation"
msgstr "Création de document"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3977,7 +3987,7 @@ msgstr "Méthode de distribution du document"
msgid "Document draft"
msgstr "Brouillon de document"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "Document dupliqué"
@@ -3994,6 +4004,10 @@ msgstr "ID externe du document mis à jour"
msgid "Document found in your account"
msgstr "Document trouvé dans votre compte"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "Document masqué"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4109,7 +4123,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "Authentification de signature de document mise à jour"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "Le processus de signature du document sera annulé"
@@ -4188,7 +4201,6 @@ msgstr "Visibilité du document mise à jour"
msgid "Document Volume"
msgstr "Volume de documents"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "Le document sera supprimé de manière permanente"
@@ -4284,6 +4296,10 @@ msgstr "Domaine réenregistré"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "Vous n'avez pas de compte? <0>Inscrivez-vous</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "Ne pas répéter"
#: 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)"
@@ -4395,10 +4411,7 @@ msgstr "Paramètres de la liste déroulante"
msgid "Dropdown values"
msgstr "Valeurs de la liste déroulante"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4781,6 +4794,7 @@ msgstr "Activer les jetons dAPI d’équipe pour déléguer la propriété du
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "Activé"
@@ -4906,10 +4920,6 @@ msgstr "Entreprise"
msgid "Envelope distributed"
msgstr "Enveloppe distribuée"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "Enveloppe dupliquée"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4963,7 +4973,6 @@ msgstr "Enveloppe mise à jour"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5665,6 +5674,10 @@ msgstr "Voici comment cela fonctionne :"
msgid "Hey Im Timur"
msgstr "Salut, je suis Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Bonjour {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Bonjour {userName},"
@@ -5677,7 +5690,6 @@ msgstr "Salut {userName}, vous devez entrer un code de vérification pour compl
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "Bonjour, {userName} <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5866,6 +5878,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"
@@ -6568,6 +6581,14 @@ msgstr "Membre"
msgid "Member Count"
msgstr "Nombre de membres"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "Le membre a été supprimé de lorganisation."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "Le membre a été supprimé de l’équipe."
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "Membre depuis"
@@ -6939,6 +6960,10 @@ msgstr "Aucun destinataire n'a été détecté dans votre document."
msgid "No recipients with this role"
msgstr "Aucun destinataire avec ce rôle"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "Aucun rappel"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7088,7 +7113,6 @@ msgstr "Sur cette page, vous pouvez créer et gérer des tokens API. Consultez n
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "Sur cette page, vous pouvez créer de nouveaux webhooks et gérer ceux existants."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7654,7 +7678,6 @@ msgstr "Veuillez confirmer votre email"
msgid "Please confirm your email address"
msgstr "Veuillez confirmer votre adresse email"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "Veuillez contacter le support si vous souhaitez annuler cette action."
@@ -7713,13 +7736,11 @@ msgstr "Veuillez noter que toute personne qui se connecte via votre portail sera
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Veuillez noter que la poursuite supprimera le destinataire de lien direct et le transformera en espace réservé."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "Veuillez noter que cette action est <0>irréversible</0>."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "Veuillez noter que cette action est <0>irréversible</0>. Une fois confirmée, ce document sera définitivement supprimé."
@@ -7728,10 +7749,6 @@ msgstr "Veuillez noter que cette action est <0>irréversible</0>. Une fois confi
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "Veuillez noter que cette action est <0>irréversible</0>. Une fois confirmée, ce modèle sera définitivement supprimé."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Veuillez noter que cette action est irréversible. Une fois confirmée, votre modèle sera définitivement supprimé."
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "Veuillez noter que cette action est irréversible. Une fois confirmée, votre token sera définitivement supprimé."
@@ -7792,9 +7809,7 @@ msgstr "Veuillez réessayer et assurez-vous d'entrer la bonne adresse email."
msgid "Please try again or contact our support."
msgstr "Veuillez réessayer ou contacter notre support."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "Veuiillez taper {0} pour confirmer"
@@ -8184,7 +8199,6 @@ msgstr "Les destinataires qui seront automatiquement ajoutés aux nouveaux docum
msgid "Recipients will be able to sign the document once sent"
msgstr "Les destinataires pourront signer le document une fois envoyé"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "Les destinataires conservent toujours leur copie du document"
@@ -8276,16 +8290,32 @@ msgstr "Recharger"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "Vous vous souvenez de votre mot de passe ? <0>Connectez-vous</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "Rappel pour {action} {documentName}"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "Rappel : {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "Rappel : {0} vous a invité à {recipientActionVerb} un document"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "Rappel : Veuillez {0} votre document<0/>\"{documentName}\""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "Rappel : Veuillez {recipientActionVerb} le document \"{0}\""
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "Rappel : Veuillez {recipientActionVerb} ce document"
@@ -8294,6 +8324,12 @@ msgstr "Rappel : Veuillez {recipientActionVerb} ce document"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Rappel : Veuillez {recipientActionVerb} votre document"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "Rappels"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8320,6 +8356,11 @@ msgstr "Retirer"
msgid "Remove email domain"
msgstr "Suppression du domaine de messagerie"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "Supprimer le membre"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8329,6 +8370,10 @@ msgstr "Supprimer le groupe d'organisation"
msgid "Remove organisation member"
msgstr "Supprimer le membre de l'organisation"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "Supprimer un membre de lorganisation"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "Supprimer le destinataire"
@@ -8342,6 +8387,10 @@ msgstr "Supprimer l'adresse e-mail de l'équipe"
msgid "Remove team member"
msgstr "Supprimer le membre de l'équipe"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "Supprimer un membre de l’équipe"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8993,6 +9042,10 @@ msgstr "Envoyer les documents aux destinataires immédiatement"
msgid "Send Envelope"
msgstr "Envoyer lenveloppe"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "Envoyer le premier rappel après"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "Envoyer au nom de l'équipe"
@@ -9156,6 +9209,7 @@ msgstr "Signer le document"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "Signer le document"
@@ -9354,6 +9408,10 @@ msgstr "Des liens de signature ont été générés pour ce document."
msgid "Signing order is enabled."
msgstr "L'ordre de signature est activé."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "Rappels de signature"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "Statut de signature"
@@ -9405,8 +9463,6 @@ msgstr "Ignorer"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Certains signataires n'ont pas été assignés à un champ de signature. Veuillez assigner au moins 1 champ de signature à chaque signataire avant de continuer."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9419,7 +9475,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9665,8 +9720,10 @@ msgid "Subscription Status"
msgstr "Statut de labonnement"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10048,7 @@ msgstr "Modèle (Legacy)"
msgid "Template Created"
msgstr "Modèle créé"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "Modèle supprimé"
@@ -9999,8 +10056,8 @@ msgstr "Modèle supprimé"
msgid "Template document uploaded"
msgstr "Document modèle importé"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "Modèle dupliqué"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
@@ -10015,6 +10072,10 @@ msgstr "Le modèle a été retiré de votre profil public."
msgid "Template has been updated."
msgstr "Le modèle a été mis à jour."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "Modèle masqué"
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "ID de Modèle (Legacy)"
@@ -10184,6 +10245,10 @@ msgstr "Le lien direct a été copié dans votre presse-papiers"
msgid "The display name for this email address"
msgstr "Le nom d'affichage pour cette adresse e-mail"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "Le document n'a pas pu être créé en raison d'informations manquantes ou invalides. Veuillez vérifier les destinataires et les champs du modèle."
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "Le document a été supprimé avec succès."
@@ -10224,7 +10289,6 @@ msgstr "La propriété du document a été déléguée à {0} au nom de {1}"
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."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "Le document sera caché de votre compte"
@@ -10453,6 +10517,10 @@ msgstr "L'équipe que vous recherchez a peut-être été supprimée, renommée o
msgid "The template has been moved successfully."
msgstr "Le modèle a été déplacé avec succès."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "Le modèle ou l'un de ses destinataires est introuvable."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "Le modèle sera retiré de votre profil"
@@ -10530,6 +10598,10 @@ msgstr "Le webhook a été créé avec succès."
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "Le webhook que vous recherchez a peut-être été supprimé, renommé ou n'a jamais existé."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "Puis répéter tous les"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "Il n'y a pas de brouillons actifs pour le moment. Vous pouvez importer un document pour commencer un brouillon."
@@ -10572,6 +10644,8 @@ msgstr "Cette action est irréversible. Veuillez vous assurer d'en avoir inform
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "Cette action n'est pas réversible. Veuillez être sûr."
@@ -10597,7 +10671,6 @@ msgstr "Ce document ne peut pas être récupéré, si vous souhaitez contester l
msgid "This document cannot be changed"
msgstr "Ce document ne peut pas être modifié"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "Ce document n'a pas pu être supprimé pour le moment. Veuillez réessayer."
@@ -10606,7 +10679,6 @@ msgstr "Ce document n'a pas pu être supprimé pour le moment. Veuillez réessay
msgid "This document could not be downloaded at this time. Please try again."
msgstr "Ce document n'a pas pu être téléchargé pour le moment. Veuillez réessayer."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Ce document n'a pas pu être dupliqué pour le moment. Veuillez réessayer."
@@ -10772,10 +10844,14 @@ msgstr "Ce signataire a déjà signé le document."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Cette équipe, et toutes les données associées à l'exception des factures de facturation, seront définitivement supprimées."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "Ce modèle n'a pas pu être supprimé pour le moment. Veuillez réessayer."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "Ce modèle n'a pas pu être dupliqué pour le moment. Veuillez réessayer."
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "Ce modèle utilise l'insertion de champ héritée, il est recommandé d'utiliser la nouvelle méthode d'insertion pour des résultats plus précis."
@@ -10879,6 +10955,10 @@ msgstr "Le titre ne peut pas être vide"
msgid "To accept this invitation you must create an account."
msgstr "Pour accepter cette invitation, vous devez créer un compte."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "Pour ajouter des membres à cette équipe, ils doivent dabord être invités dans lorganisation. Seuls les administrateurs et les responsables de lorganisation peuvent inviter de nouveaux membres — veuillez contacter lun dentre eux pour quil invite des membres en votre nom."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "Pour ajouter des membres à cette équipe, vous devez dabord les ajouter à lorganisation."
@@ -11818,6 +11898,7 @@ msgstr "Voir le document"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11984,6 +12065,11 @@ msgstr "Nous n'avons pas pu créer un client Stripe. Veuillez réessayer."
msgid "We couldn't enable AI features right now. Please try again."
msgstr "Nous navons pas pu activer les fonctionnalités dIA pour le moment. Veuillez réessayer."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "Nous navons pas pu supprimer ce membre. Veuillez réessayer plus tard."
#: 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."
@@ -12246,6 +12332,10 @@ msgstr "Nous n'avons pas pu mettre à jour vos préférences de document pour le
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "Nous n'avons pas pu mettre à jour vos préférences d'e-mail pour le moment, veuillez réessayer plus tard"
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
msgstr "Nous navons pas pu vérifier que vous êtes humain. Veuillez réessayer."
#: 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-signing/document-signing-auth-password.tsx
@@ -12479,10 +12569,6 @@ msgstr "Vous êtes sur le point de terminer la signature du document suivant"
msgid "You are about to complete viewing the following document"
msgstr "Vous êtes sur le point de terminer la visualisation du document suivant"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "Vous êtes sur le point de supprimer <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "Vous êtes sur le point de supprimer <0>\"{title}\"</0>"
@@ -12500,10 +12586,6 @@ msgstr "Vous êtes sur le point de supprimer l'e-mail d'équipe suivant de <0>{t
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "Vous êtes sur le point de donner accès à cette équipe à tous les membres de l'organisation sous leur rôle organisationnel."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "Vous êtes sur le point de cacher <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "Vous êtes sur le point de masquer <0>\"{title}\"</0>"
@@ -12555,6 +12637,14 @@ msgstr "Vous êtes sur le point de supprimer l'utilisateur suivant de <0>{0}</0>
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "Vous êtes sur le point de supprimer l'utilisateur suivant de <0>{teamName}</0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "Vous êtes sur le point de supprimer lutilisateur suivant de lorganisation <0>{organisationName}</0> :"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "Vous êtes sur le point de retirer lutilisateur suivant de l’équipe <0>{teamName}</0> :"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +12967,10 @@ msgstr "Vous avez atteint le nombre maximum d'équipes pour votre abonnement. Ve
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "Vous avez atteint votre limite de documents pour ce mois. Veuillez passer à l'abonnement supérieur."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "Vous avez atteint votre limite de documents pour cet abonnement."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13327,7 +13421,7 @@ msgstr "Votre document a été enregistré comme modèle."
msgid "Your document has been sent successfully."
msgstr "Votre document a été envoyé avec succès."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "Votre document a été dupliqué avec succès."
@@ -13394,10 +13488,6 @@ msgstr "Votre enveloppe a été distribuée avec succès."
msgid "Your envelope has been resent successfully."
msgstr "Votre enveloppe a été renvoyée avec succès."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "Votre enveloppe a été dupliquée avec succès."
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "Vos tokens existants"
@@ -13494,14 +13584,10 @@ msgstr "Votre équipe a été mise à jour avec succès."
msgid "Your template has been created successfully"
msgstr "Votre modèle a été créé avec succès"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "Votre modèle a été dupliqué avec succès."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "Votre modèle a été supprimé avec succès."
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
msgstr "Votre modèle a été renommé avec succès."
@@ -13515,10 +13601,6 @@ msgstr "Votre modèle a été mis à jour avec succès"
msgid "Your template has been uploaded successfully."
msgstr "Votre modèle a été importé avec succès."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "Votre modèle sera dupliqué."
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "Vos modèles"
+167 -85
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: it\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-04-22 14:34\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -45,10 +45,6 @@ msgstr "“{documentName}” è stato firmato"
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}” è stato firmato da tutti i firmatari"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" è stato eliminato con successo"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\" per conto di \"Team Name\" ti ha invitato a firmare \"documento esempio\"."
@@ -57,6 +53,10 @@ msgstr "\"{placeholderEmail}\" per conto di \"Team Name\" ti ha invitato a firma
msgid "\"{title}\" has been successfully deleted"
msgstr "\"{title}\" è stato eliminato correttamente"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "\"{title}\" è stato nascosto correttamente"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Team Name\" ti ha invitato a firmare \"documento esempio\"."
@@ -301,14 +301,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, one {Giorno} other {Giorni}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, one {Mese} other {Mesi}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, one {Settimana} other {Settimane}}"
@@ -1143,6 +1146,7 @@ msgstr "Azione"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1488,7 +1492,6 @@ msgstr "Tutti i domini email sono stati sincronizzati con successo"
msgid "All Folders"
msgstr "Tutte le Cartelle"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "Tutte le firme inserite saranno annullate"
@@ -1501,7 +1504,6 @@ msgstr "Tutti gli elementi devono essere dello stesso tipo."
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "Tutti i destinatari hanno firmato. Il documento è in fase di elaborazione e a breve riceverai una copia via email."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1599,6 +1601,8 @@ msgstr "Verrà inviato un'email contenente un invito a ciascun membro."
msgid "An email with this address already exists."
msgstr "Una email con questo indirizzo esiste già."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1694,6 @@ msgstr "Si è verificato un errore durante la disabilitazione della firma tramit
msgid "An error occurred while disabling the user."
msgstr "Si è verificato un errore durante la disabilitazione dell'utente."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "Si è verificato un errore durante la duplicazione del modello."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "Si è verificato un errore durante l'abilitazione della firma del link diretto."
@@ -1933,6 +1933,7 @@ msgstr "Approva"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "Approva Documento"
@@ -1996,7 +1997,6 @@ msgstr "Sei sicuro di voler eliminare questa organizzazione?"
msgid "Are you sure you wish to delete this team?"
msgstr "Sei sicuro di voler eliminare questo team?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2029,6 +2029,7 @@ msgstr "Assisti"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "Assisti il Documento"
@@ -2302,7 +2303,6 @@ msgstr "Accettando questa richiesta, concedi a {0} le seguenti autorizzazioni:"
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "Accettando questa richiesta, concederai l'accesso a <0>{teamName}</0> a:"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "Eliminando questo documento, si verificherà quanto segue:"
@@ -2336,16 +2336,16 @@ msgid "Can't find someone?"
msgstr "Non riesci a trovare qualcuno?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2401,7 @@ msgstr "Non riesci a trovare qualcuno?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2777,10 @@ msgstr "Configura le impostazioni generali per il modello."
msgid "Configure security settings for the document."
msgstr "Configura le impostazioni di sicurezza per il documento."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "Configura le impostazioni dei promemoria di firma per il documento."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "Configura il modello"
@@ -2807,6 +2809,10 @@ msgstr "Configura i ruoli del team per ogni gruppo"
msgid "Configure the team roles for each member"
msgstr "Configura i ruoli del team per ogni membro"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "Configura quando e con quale frequenza vengono inviate le email di promemoria ai destinatari che non hanno ancora completato la firma. Usa le impostazioni predefinite del team quando è impostato su eredita."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2885,12 @@ msgid "Continue"
msgstr "Continua"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "Continua approvando il documento."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "Continua assistendo con il documento."
@@ -2891,10 +2899,12 @@ msgid "Continue by downloading the document."
msgstr "Continua scaricando il documento."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "Continua firmando il documento."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "Continua visualizzando il documento."
@@ -2927,6 +2937,10 @@ msgstr "Controlla la formattazione del messaggio che verrà inviato quando si in
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "Controlla la lingua del documento, inclusa quella per le notifiche email e il certificato finale che viene generato e allegato al documento."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "Controlla quando e con quale frequenza vengono inviate le email di promemoria ai destinatari che non hanno ancora completato la firma."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "Controlla se i registri di audit verranno inclusi nel documento quando viene scaricato. I registri di audit possono comunque essere scaricati separatamente dalla pagina dei registri."
@@ -3313,6 +3327,10 @@ msgstr "File personalizzato da {0} MB"
msgid "Custom duration"
msgstr "Durata personalizzata"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "Intervallo personalizzato"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "Gruppi di Organizzazione Personalizzati"
@@ -3414,6 +3432,10 @@ msgstr "Impostazioni predefinite applicate a questo team. I valori ereditati pro
msgid "Default Signature Settings"
msgstr "Impostazioni predefinite della firma"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "Promemorie di firma predefiniti"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "Fuso Orario Predefinito"
@@ -3437,13 +3459,11 @@ msgstr "Delega proprietà del documento"
msgid "Delegate Document Ownership"
msgstr "Delega della proprietà del documento"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "elimina"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3477,6 @@ msgstr "elimina"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3813,14 +3832,6 @@ msgstr "Record DKIM generati. Aggiungi i record DNS per verificare il tuo domini
msgid "DNS Records"
msgstr "Record DNS"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "Vuoi eliminare questo modello?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "Vuoi duplicare questo modello?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Licenza Documenso"
@@ -3946,7 +3957,6 @@ msgid "Document Creation"
msgstr "Creazione del documento"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3977,7 +3987,7 @@ msgstr "Metodo di distribuzione del documento"
msgid "Document draft"
msgstr "Bozza del documento"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "Documento Duplicato"
@@ -3994,6 +4004,10 @@ msgstr "ID esterno del documento aggiornato"
msgid "Document found in your account"
msgstr "Documento trovato nel tuo account"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "Documento nascosto"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4109,7 +4123,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "Autenticazione firma documento aggiornata"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "Il processo di firma del documento sarà annullato"
@@ -4188,7 +4201,6 @@ msgstr "Visibilità del documento aggiornata"
msgid "Document Volume"
msgstr "Volume del documento"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "Il documento sarà eliminato definitivamente"
@@ -4284,6 +4296,10 @@ msgstr "Dominio nuovamente registrato"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "Non hai un account? <0>Registrati</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "Non ripetere"
#: 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)"
@@ -4395,10 +4411,7 @@ msgstr "Impostazioni Menu a Tendina"
msgid "Dropdown values"
msgstr "Valori del menu a tendina"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4781,6 +4794,7 @@ msgstr "Abilita i token API del team per delegare la proprietà del documento a
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "Abilitato"
@@ -4906,10 +4920,6 @@ msgstr "Impresa"
msgid "Envelope distributed"
msgstr "Busta distribuita"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "Busta Duplicata"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4963,7 +4973,6 @@ msgstr "Busta aggiornata"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5665,6 +5674,10 @@ msgstr "Ecco come funziona:"
msgid "Hey Im Timur"
msgstr "Ciao, sono Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Ciao {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Ciao {userName},"
@@ -5677,7 +5690,6 @@ msgstr "Ciao {userName}, devi inserire un codice di verifica per completare il d
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "Ciao, {userName} <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5866,6 +5878,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"
@@ -6568,6 +6581,14 @@ msgstr "Membro"
msgid "Member Count"
msgstr "Conteggio membri"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "Il membro è stato rimosso dall'organizzazione."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "Il membro è stato rimosso dal team."
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "Membro dal"
@@ -6939,6 +6960,10 @@ msgstr "Nel tuo documento non è stato rilevato alcun destinatario."
msgid "No recipients with this role"
msgstr "Nessun destinatario con questo ruolo"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "Nessun promemoria"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7088,7 +7113,6 @@ msgstr "Su questa pagina, puoi creare e gestire token API. Consulta la nostra <0
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "In questa pagina, puoi creare nuovi Webhook e gestire quelli esistenti."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7654,7 +7678,6 @@ msgstr "Per favore conferma la tua email"
msgid "Please confirm your email address"
msgstr "Per favore conferma il tuo indirizzo email"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "Si prega di contattare il supporto se si desidera annullare questa azione."
@@ -7713,13 +7736,11 @@ msgstr "Nota che chiunque acceda tramite il tuo portale verrà aggiunto alla tua
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Si prega di notare che procedendo si rimuoverà il destinatario del link diretto e si trasformerà in un segnaposto."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "Si prega di notare che questa azione è <0>irreversibile</0>."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "Si prega di notare che questa azione è <0>irreversibile</0>. Una volta confermato, questo documento sarà eliminato permanentemente."
@@ -7728,10 +7749,6 @@ msgstr "Si prega di notare che questa azione è <0>irreversibile</0>. Una volta
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "Tieni presente che questa azione è <0>irreversibile</0>. Una volta confermata, questo modello verrà eliminato in modo permanente."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Si prega di notare che questa azione è irreversibile. Una volta confermato, il tuo modello sarà eliminato permanentemente."
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "Si prega di notare che questa azione è irreversibile. Una volta confermato, il tuo token sarà eliminato permanentemente."
@@ -7792,9 +7809,7 @@ msgstr "Si prega di riprovare assicurandosi di inserire l'indirizzo email corret
msgid "Please try again or contact our support."
msgstr "Per favore, riprova o contatta il nostro supporto."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "Per favore, digita {0} per confermare"
@@ -8184,7 +8199,6 @@ msgstr "Destinatari che verranno aggiunti automaticamente ai nuovi documenti."
msgid "Recipients will be able to sign the document once sent"
msgstr "I destinatari potranno firmare il documento una volta inviato"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "I destinatari conserveranno comunque la loro copia del documento"
@@ -8276,16 +8290,32 @@ msgstr "Ricarica"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "Ricordi la tua password? <0>Accedi</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "Promemoria per {action} {documentName}"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "Promemoria: {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "Promemoria: {0} ti ha invitato a {recipientActionVerb} un documento"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "Promemoria: ti preghiamo di {0} il tuo documento<0/>\"{documentName}\""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "Promemoria: ti preghiamo di {recipientActionVerb} il documento \"{0}\""
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "Promemoria: per favore {recipientActionVerb} questo documento"
@@ -8294,6 +8324,12 @@ msgstr "Promemoria: per favore {recipientActionVerb} questo documento"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Promemoria: per favore {recipientActionVerb} il tuo documento"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "Promemoria"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8320,6 +8356,11 @@ msgstr "Rimuovi"
msgid "Remove email domain"
msgstr "Rimuovi dominio email"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "Rimuovi membro"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8329,6 +8370,10 @@ msgstr "Rimuovere il gruppo di organizzazioni"
msgid "Remove organisation member"
msgstr "Rimuovere membro dell'organizzazione"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "Rimuovi membro dell'organizzazione"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "Rimuovi destinatario"
@@ -8342,6 +8387,10 @@ msgstr "Rimuovere l'email del team"
msgid "Remove team member"
msgstr "Rimuovere il membro del team"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "Rimuovi membro del team"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8993,6 +9042,10 @@ msgstr "Invia documenti ai destinatari immediatamente"
msgid "Send Envelope"
msgstr "Invia busta"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "Invia il primo promemoria dopo"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "Invia per conto del team"
@@ -9156,6 +9209,7 @@ msgstr "Firma il documento"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "Firma documento"
@@ -9354,6 +9408,10 @@ msgstr "I link di firma sono stati generati per questo documento."
msgid "Signing order is enabled."
msgstr "L'ordine di firma è abilitato."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "Promemoria di firma"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "Stato della firma"
@@ -9405,8 +9463,6 @@ msgstr "Salta"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Alcuni firmatari non hanno un campo firma assegnato. Assegna almeno 1 campo di firma a ciascun firmatario prima di procedere."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9419,7 +9475,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9665,8 +9720,10 @@ msgid "Subscription Status"
msgstr "Stato dellabbonamento"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10048,7 @@ msgstr "Modello (Legacy)"
msgid "Template Created"
msgstr "Modello creato"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "Modello eliminato"
@@ -9999,8 +10056,8 @@ msgstr "Modello eliminato"
msgid "Template document uploaded"
msgstr "Documento modello caricato"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "Modello duplicato"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
@@ -10015,6 +10072,10 @@ msgstr "Il modello è stato rimosso dal tuo profilo pubblico."
msgid "Template has been updated."
msgstr "Il modello è stato aggiornato."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "Modello nascosto"
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "ID Modello (Legacy)"
@@ -10184,6 +10245,10 @@ msgstr "Il link diretto è stato copiato negli appunti"
msgid "The display name for this email address"
msgstr "Il nome visualizzato per questo indirizzo email"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "Non è stato possibile creare il documento a causa di informazioni mancanti o non valide. Per favore, verifica i destinatari e i campi del modello."
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "Il documento è stato eliminato correttamente."
@@ -10224,7 +10289,6 @@ msgstr "La proprietà del documento è stata delegata a {0} per conto di {1}"
msgid "The document was created but could not be sent to recipients."
msgstr "Il documento è stato creato ma non è stato possibile inviarlo ai destinatari."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "Il documento verrà nascosto dal tuo account"
@@ -10453,6 +10517,10 @@ msgstr "Il team che stai cercando potrebbe essere stato rimosso, rinominato o po
msgid "The template has been moved successfully."
msgstr "Il modello è stato spostato con successo."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "Il modello o uno dei suoi destinatari non è stato trovato."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "Il modello sarà rimosso dal tuo profilo"
@@ -10530,6 +10598,10 @@ msgstr "Il webhook è stato creato con successo."
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "Il webhook che stai cercando potrebbe essere stato rimosso, rinominato o potrebbe non esistito mai."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "Quindi ripeti ogni"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "Non ci sono bozze attive al momento attuale. Puoi caricare un documento per iniziare a redigere."
@@ -10572,6 +10644,8 @@ msgstr "Questa azione è irreversibile. Assicurati di aver informato l'utente pr
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "Questa azione non è reversibile. Si prega di essere certi."
@@ -10597,7 +10671,6 @@ msgstr "Questo documento non può essere recuperato, se vuoi contestare la ragio
msgid "This document cannot be changed"
msgstr "Questo documento non può essere modificato"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "Questo documento non può essere eliminato in questo momento. Riprova."
@@ -10606,7 +10679,6 @@ msgstr "Questo documento non può essere eliminato in questo momento. Riprova."
msgid "This document could not be downloaded at this time. Please try again."
msgstr "Questo documento non può essere scaricato in questo momento. Per favore riprova."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Questo documento non può essere duplicato in questo momento. Riprova."
@@ -10772,10 +10844,14 @@ msgstr "Questo firmatario ha già firmato il documento."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Questo team e tutti i dati associati, escluse le fatture di fatturazione, verranno eliminati definitivamente."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "Questo modello non può essere eliminato in questo momento. Per favore prova di nuovo."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "Al momento non è stato possibile duplicare questo modello. Riprova più tardi."
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "Questo modello utilizza l'inserimento campo legacy, consigliamo di utilizzare il nuovo metodo di inserimento campo per risultati più accurati."
@@ -10879,6 +10955,10 @@ msgstr "Il titolo non può essere vuoto"
msgid "To accept this invitation you must create an account."
msgstr "Per accettare questo invito devi creare un account."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "Per aggiungere membri a questo team, devono prima essere invitati allorganizzazione. Solo gli amministratori e i responsabili dellorganizzazione possono invitare nuovi membri: contatta uno di loro per invitare membri per tuo conto."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "Per aggiungere membri a questo team, devi prima aggiungerli allorganizzazione."
@@ -11818,6 +11898,7 @@ msgstr "Visualizza documento"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11984,6 +12065,11 @@ msgstr "Non siamo riusciti a creare un cliente di Stripe. Si prega di riprovare.
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/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "Non è stato possibile rimuovere questo membro. Riprova più tardi."
#: 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."
@@ -12246,6 +12332,10 @@ msgstr "Non siamo riusciti ad aggiornare le tue preferenze sui documenti al mome
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "Al momento non siamo in grado di aggiornare le tue preferenze email, riprova più tardi."
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
msgstr "Non siamo riusciti a verificare che tu sia umano. Riprova."
#: 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-signing/document-signing-auth-password.tsx
@@ -12479,10 +12569,6 @@ msgstr "Stai per completare la firma del seguente documento"
msgid "You are about to complete viewing the following document"
msgstr "Stai per completare la visualizzazione del seguente documento"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "Stai per eliminare <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "Stai per eliminare <0>\"{title}\"</0>"
@@ -12500,10 +12586,6 @@ msgstr "Stai per eliminare la seguente email del team da <0>{teamName}</0>."
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "Stai per dare a tutti i membri dell'organizzazione l'accesso a questo team secondo il loro ruolo nell'organizzazione."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "Stai per nascondere <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "Stai per nascondere <0>\"{title}\"</0>"
@@ -12555,6 +12637,14 @@ msgstr "Stai per rimuovere l'utente seguente da <0>{0}</0>."
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "Stai per rimuovere il seguente utente da <0>{teamName}</0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "Stai per rimuovere il seguente utente dall'organizzazione <0>{organisationName}</0>:"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "Stai per rimuovere il seguente utente dal team <0>{teamName}</0>:"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +12967,10 @@ msgstr "Hai raggiunto il massimo numero di team per il tuo piano. Si prega di co
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "Hai raggiunto il limite dei documenti per questo mese. Si prega di aggiornare il proprio piano."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "Hai raggiunto il limite di documenti previsto per questo piano."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13327,7 +13421,7 @@ msgstr "Il tuo documento è stato salvato come modello."
msgid "Your document has been sent successfully."
msgstr "Il tuo documento è stato inviato correttamente."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "Il tuo documento è stato duplicato correttamente."
@@ -13394,10 +13488,6 @@ msgstr "La tua busta è stata distribuita con successo."
msgid "Your envelope has been resent successfully."
msgstr "La tua busta è stata reinviata con successo."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "La tua busta è stata duplicata con successo."
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "I tuoi token esistenti"
@@ -13494,14 +13584,10 @@ msgstr "Il tuo team è stato aggiornato correttamente."
msgid "Your template has been created successfully"
msgstr "Il tuo modello è stato creato con successo"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "Il tuo modello è stato duplicato correttamente."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "Il tuo modello è stato eliminato correttamente."
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
msgstr "Il tuo template è stato rinominato correttamente."
@@ -13515,10 +13601,6 @@ msgstr "Il tuo modello è stato aggiornato correttamente"
msgid "Your template has been uploaded successfully."
msgstr "Il tuo modello è stato caricato con successo."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "Il tuo modello sarà duplicato."
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "I tuoi modelli"
+168 -86
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ja\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-04-22 14:34\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -45,10 +45,6 @@ msgstr "「{documentName}」に署名されました"
msgid "“{documentName}” was signed by all signers"
msgstr "「{documentName}」はすべての署名者によって署名されました"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" は正常に削除されました。"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "「Team Name」を代表して「{placeholderEmail}」が「example document」への署名を依頼しています。"
@@ -57,6 +53,10 @@ msgstr "「Team Name」を代表して「{placeholderEmail}」が「example docu
msgid "\"{title}\" has been successfully deleted"
msgstr "「{title}」は正常に削除されました"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "「{title}」は正常に非表示になりました"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "「Team Name」から「example document」への署名依頼が届いています。"
@@ -301,14 +301,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, other {日}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, other {か月}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, other {週間}}"
@@ -1143,6 +1146,7 @@ msgstr "操作"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1488,7 +1492,6 @@ msgstr "すべてのメールドメインが正常に同期されました"
msgid "All Folders"
msgstr "すべてのフォルダ"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "挿入されたすべての署名は無効になります"
@@ -1501,7 +1504,6 @@ msgstr "すべてのアイテムは同じ種類でなければなりません。
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "すべての受信者が署名しました。現在ドキュメントを処理しており、まもなく署名済みドキュメントのコピーがメールで送信されます。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1599,6 +1601,8 @@ msgstr "各メンバー宛てに招待状を含むメールが送信されます
msgid "An email with this address already exists."
msgstr "このメールアドレスはすでに存在します。"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1694,6 @@ msgstr "ダイレクトリンク署名を無効にする際にエラーが発生
msgid "An error occurred while disabling the user."
msgstr "ユーザーの無効化中にエラーが発生しました。"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "テンプレートの複製中にエラーが発生しました。"
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "ダイレクトリンク署名を有効にする際にエラーが発生しました。"
@@ -1933,6 +1933,7 @@ msgstr "承認"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "文書を承認"
@@ -1996,7 +1997,6 @@ msgstr "本当にこの組織を削除してもよろしいですか?"
msgid "Are you sure you wish to delete this team?"
msgstr "このチームを本当に削除しますか?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2029,6 +2029,7 @@ msgstr "補助"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "ドキュメントを補助"
@@ -2302,7 +2303,6 @@ msgstr "このリクエストを承諾すると、{0} に次の権限を付与
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "このリクエストを承諾すると、<0>{teamName}</0> に対して次のアクセス権を付与することになります。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "この文書を削除すると、次のことが行われます。"
@@ -2336,16 +2336,16 @@ msgid "Can't find someone?"
msgstr "メンバーが見つかりませんか?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2401,7 @@ msgstr "メンバーが見つかりませんか?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2777,10 @@ msgstr "このテンプレートの一般設定を構成します。"
msgid "Configure security settings for the document."
msgstr "この文書のセキュリティ設定を構成します。"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "この文書の署名リマインダー設定を構成します。"
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "テンプレートを構成"
@@ -2807,6 +2809,10 @@ msgstr "グループごとにチームロールを設定します"
msgid "Configure the team roles for each member"
msgstr "メンバーごとにチームロールを設定します"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "まだ署名を完了していない受信者に、リマインドメールをいつ、どの頻度で送信するかを設定します。「継承」に設定されている場合は、チームのデフォルト設定が使用されます。"
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2885,12 @@ msgid "Continue"
msgstr "続行"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "ドキュメントを承認して続行してください。"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "ドキュメントの補助を続行してください。"
@@ -2891,10 +2899,12 @@ msgid "Continue by downloading the document."
msgstr "ドキュメントをダウンロードして続行してください。"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "ドキュメントに署名して続行してください。"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "ドキュメントを表示して続行してください。"
@@ -2927,6 +2937,10 @@ msgstr "受信者への署名依頼メールの書式を制御します。文書
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "ドキュメントの言語を制御します。メール通知に使用される言語や、生成されドキュメントに添付される最終証明書の言語も含まれます。"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "まだ署名を完了していない受信者に、リマインドメールをいつ、どの頻度で送信するかを管理します。"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "ダウンロード時に監査ログをドキュメントに含めるかどうかを制御します。監査ログはログページから別途ダウンロードすることもできます。"
@@ -3313,6 +3327,10 @@ msgstr "カスタム {0} MB ファイル"
msgid "Custom duration"
msgstr "カスタム期間"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "カスタム間隔"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "カスタム組織グループ"
@@ -3414,6 +3432,10 @@ msgstr "このチームに適用されているデフォルト設定です。継
msgid "Default Signature Settings"
msgstr "既定の署名設定"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "デフォルトの署名リマインダー"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "既定のタイムゾーン"
@@ -3437,13 +3459,11 @@ msgstr "ドキュメント所有権の委任"
msgid "Delegate Document Ownership"
msgstr "文書の所有権を委譲する"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "delete"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3477,6 @@ msgstr "delete"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3813,14 +3832,6 @@ msgstr "DKIM レコードを生成しました。DNS レコードを追加して
msgid "DNS Records"
msgstr "DNS レコード"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "このテンプレートを削除しますか?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "このテンプレートを複製しますか?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Documenso ライセンス"
@@ -3946,7 +3957,6 @@ msgid "Document Creation"
msgstr "ドキュメント作成"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3977,7 +3987,7 @@ msgstr "ドキュメントの配信方法"
msgid "Document draft"
msgstr "文書の下書き"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "文書を複製しました"
@@ -3994,6 +4004,10 @@ msgstr "ドキュメントの外部 ID が更新されました"
msgid "Document found in your account"
msgstr "あなたのアカウントでドキュメントが見つかりました"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "ドキュメントを非表示にしました"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4109,7 +4123,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "ドキュメントの署名認証が更新されました"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "文書の署名プロセスはキャンセルされます"
@@ -4188,7 +4201,6 @@ msgstr "ドキュメント公開範囲が更新されました"
msgid "Document Volume"
msgstr "文書ボリューム"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "文書は完全に削除されます"
@@ -4284,6 +4296,10 @@ msgstr "ドメインが再登録されました"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "アカウントをお持ちでないですか?<0>サインアップ</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "繰り返さない"
#: 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)"
@@ -4395,10 +4411,7 @@ msgstr "ドロップダウン設定"
msgid "Dropdown values"
msgstr "ドロップダウンの値"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4781,6 +4794,7 @@ msgstr "チーム API トークンを有効にして、別のチームメンバ
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "有効"
@@ -4906,10 +4920,6 @@ msgstr "Enterprise"
msgid "Envelope distributed"
msgstr "封筒を送信しました"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "封筒を複製しました"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4963,7 +4973,6 @@ msgstr "封筒を更新しました"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5665,6 +5674,10 @@ msgstr "仕組みは次のとおりです。"
msgid "Hey Im Timur"
msgstr "こんにちは、Timur です"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "{recipientName} 様"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "{userName} さん、こんにちは。"
@@ -5677,7 +5690,6 @@ msgstr "{userName} 様、文書「{documentTitle}」を完了するには、認
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "こんにちは、{userName} さん <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5866,6 +5878,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"
@@ -6568,6 +6581,14 @@ msgstr "メンバー"
msgid "Member Count"
msgstr "メンバー数"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "メンバーは組織から削除されました。"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "メンバーはチームから削除されました。"
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "メンバー登録日"
@@ -6939,6 +6960,10 @@ msgstr "ドキュメント内で受信者が検出されませんでした。"
msgid "No recipients with this role"
msgstr "このロールの受信者はいません"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "リマインダーなし"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7088,7 +7113,6 @@ msgstr "このページでは、API トークンの作成と管理ができま
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "このページでは Webhook の新規作成と既存 Webhook の管理が行えます。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7654,7 +7678,6 @@ msgstr "メールアドレスを確認してください"
msgid "Please confirm your email address"
msgstr "メールアドレスを確認してください"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "この操作を元に戻したい場合は、サポートまでお問い合わせください。"
@@ -7713,13 +7736,11 @@ msgstr "ポータルからサインインしたユーザーは、すべて組織
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "続行すると、ダイレクトリンクの受信者が削除され、プレースホルダーに変換されます。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "この操作は<0>取り消せません</0>のでご注意ください。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "この操作は<0>取り消せません</0>。確認すると、この文書は完全に削除されます。"
@@ -7728,10 +7749,6 @@ msgstr "この操作は<0>取り消せません</0>。確認すると、この
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "この操作は<0>元に戻せません</0>。一度実行すると、このテンプレートは完全に削除されます。"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "この操作は取り消せません。確認すると、テンプレートは完全に削除されます。"
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "この操作は取り消せません。確認すると、トークンは完全に削除されます。"
@@ -7792,9 +7809,7 @@ msgstr "もう一度お試しいただき、正しいメールアドレスが入
msgid "Please try again or contact our support."
msgstr "もう一度お試しいただくか、サポートにお問い合わせください。"
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "確認のため {0} と入力してください"
@@ -8184,7 +8199,6 @@ msgstr "新しいドキュメントに自動的に追加される受信者です
msgid "Recipients will be able to sign the document once sent"
msgstr "送信後、受信者は文書に署名できるようになります"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "受信者は引き続きドキュメントのコピーを保持できます"
@@ -8276,16 +8290,32 @@ msgstr "再読み込み"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "パスワードを思い出しましたか?<0>サインイン</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "{documentName} を{action}するためのリマインダー"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "リマインダー: {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "リマインダー: {0} からドキュメントの{recipientActionVerb}依頼が届いています"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "リマインダー: 書類を{0}してください<0/>\\\"{documentName}\\\""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "リマインダー: 書類 \\\"{0}\\\" を{recipientActionVerb}してください"
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "リマインダー: このドキュメントを{recipientActionVerb}してください"
@@ -8294,6 +8324,12 @@ msgstr "リマインダー: このドキュメントを{recipientActionVerb}し
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "リマインダー: ドキュメントを{recipientActionVerb}してください"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "リマインダー"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8320,6 +8356,11 @@ msgstr "削除"
msgid "Remove email domain"
msgstr "メールドメインを削除"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "メンバーを削除"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8329,6 +8370,10 @@ msgstr "組織グループを削除"
msgid "Remove organisation member"
msgstr "組織メンバーを削除"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "組織メンバーを削除"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "受信者を削除"
@@ -8342,6 +8387,10 @@ msgstr "チームのメールアドレスを削除"
msgid "Remove team member"
msgstr "チームメンバーを削除"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "チームメンバーを削除"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8993,6 +9042,10 @@ msgstr "ドキュメントをすぐに受信者へ送信する"
msgid "Send Envelope"
msgstr "封筒を送信"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "最初のリマインダーを送信するまでの期間"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "チームを代表して送信"
@@ -9156,6 +9209,7 @@ msgstr "文書に署名"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "文書に署名"
@@ -9354,6 +9408,10 @@ msgstr "この文書の署名リンクが生成されています。"
msgid "Signing order is enabled."
msgstr "署名順序が有効になっています。"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "署名リマインダー"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "署名状況"
@@ -9405,8 +9463,6 @@ msgstr "スキップ"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "一部の署名者に署名フィールドが割り当てられていません。続行する前に、各署名者に少なくとも 1 つの署名フィールドを割り当ててください。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9419,7 +9475,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9665,8 +9720,10 @@ msgid "Subscription Status"
msgstr "サブスクリプション状況"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10048,7 @@ msgstr "テンプレート(レガシー)"
msgid "Template Created"
msgstr "テンプレートを作成しました"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "テンプレートを削除しました"
@@ -9999,8 +10056,8 @@ msgstr "テンプレートを削除しました"
msgid "Template document uploaded"
msgstr "テンプレート文書をアップロードしました"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "テンプレートを複製しました"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
@@ -10015,6 +10072,10 @@ msgstr "テンプレートを公開プロフィールから削除しました。
msgid "Template has been updated."
msgstr "テンプレートを更新しました。"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "テンプレートを非表示にしました"
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "テンプレートID(レガシー)"
@@ -10184,6 +10245,10 @@ msgstr "ダイレクトリンクをクリップボードにコピーしました
msgid "The display name for this email address"
msgstr "このメールアドレスの表示名です"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "不足または無効な情報があるため、文書を作成できませんでした。テンプレートの受信者とフィールドを確認してください。"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "ドキュメントは正常に削除されました。"
@@ -10224,7 +10289,6 @@ msgstr "文書の所有権は {1} を代表して {0} に委任されました"
msgid "The document was created but could not be sent to recipients."
msgstr "文書は作成されましたが、受信者に送信できませんでした。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "文書はアカウントから非表示になります"
@@ -10453,6 +10517,10 @@ msgstr "お探しのチームは削除されたか、名前が変更されたか
msgid "The template has been moved successfully."
msgstr "テンプレートは正常に移動されました。"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "テンプレート、またはその受信者の一人が見つかりませんでした。"
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "テンプレートはプロフィールから削除されます"
@@ -10530,6 +10598,10 @@ msgstr "Webhook は正常に作成されました。"
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "お探しのWebhookは削除されたか、名前が変更されたか、もともと存在しなかった可能性があります。"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "その後の繰り返し間隔"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "現在、有効な下書きはありません。文書をアップロードすると、下書きを開始できます。"
@@ -10572,6 +10644,8 @@ msgstr "この操作は元に戻せません。実行する前に、必ずユー
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "この操作は元に戻せません。十分ご注意ください。"
@@ -10597,7 +10671,6 @@ msgstr "このドキュメントは復元できません。今後のドキュメ
msgid "This document cannot be changed"
msgstr "このドキュメントは変更できません"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "この文書は現在削除できません。もう一度お試しください。"
@@ -10606,7 +10679,6 @@ msgstr "この文書は現在削除できません。もう一度お試しくだ
msgid "This document could not be downloaded at this time. Please try again."
msgstr "この文書は現在ダウンロードできません。もう一度お試しください。"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "この文書は現在複製できません。もう一度お試しください。"
@@ -10772,10 +10844,14 @@ msgstr "この署名者はすでにドキュメントに署名しています。
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "このチームと、そのチームに紐づく請求書を除くすべてのデータは完全に削除されます。"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "このテンプレートは現在削除できません。もう一度お試しください。"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "このテンプレートは現在複製できません。もう一度お試しください。"
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "このテンプレートは旧式のフィールド挿入を使用しています。より正確な結果のために、新しいフィールド挿入方法の使用を推奨します。"
@@ -10879,6 +10955,10 @@ msgstr "タイトルを空にすることはできません"
msgid "To accept this invitation you must create an account."
msgstr "この招待を受け入れるにはアカウントを作成する必要があります。"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "このチームにメンバーを追加するには、まずそのメンバーを組織に招待する必要があります。新しいメンバーを招待できるのは、組織の管理者とマネージャーのみです。代わりに招待してもらうには、そのいずれかに連絡してください。"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "このチームにメンバーを追加するには、まずそのメンバーを組織に追加する必要があります。"
@@ -11818,6 +11898,7 @@ msgstr "ドキュメントを表示"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11984,6 +12065,11 @@ msgstr "Stripe 顧客を作成できませんでした。もう一度お試し
msgid "We couldn't enable AI features right now. Please try again."
msgstr "現在AI機能を有効にできませんでした。もう一度お試しください。"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "このメンバーを削除できませんでした。しばらくしてからもう一度お試しください。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "グループを更新できませんでした。もう一度お試しください。"
@@ -12246,6 +12332,10 @@ msgstr "現在、文書設定を更新できません。後でもう一度お試
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "現在、メール設定を更新できませんでした。後でもう一度お試しください。"
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
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-signing/document-signing-auth-password.tsx
@@ -12479,10 +12569,6 @@ msgstr "次の文書への署名を完了しようとしています"
msgid "You are about to complete viewing the following document"
msgstr "次の文書の閲覧を完了しようとしています"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "<0>\"{documentTitle}\"</0> を削除しようとしています"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "<0>\"{title}\"</0> を削除しようとしています"
@@ -12500,10 +12586,6 @@ msgstr "<0>{teamName}</0> から次のチームメールアドレスを削除し
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "すべての組織メンバーに対して、このチームへのアクセス権を付与しようとしています。メンバーには組織ロールに基づいた権限が与えられます。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "<0>\"{documentTitle}\"</0> を非表示にしようとしています"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "<0>\"{title}\"</0> を非表示にしようとしています"
@@ -12555,6 +12637,14 @@ msgstr "次のユーザーを <0>{0}</0> から削除しようとしています
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "<0>{teamName}</0> から次のユーザーを削除しようとしています。"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "次のユーザーを組織 <0>{organisationName}</0> から削除しようとしています:"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "次のユーザーをチーム <0>{teamName}</0> から削除しようとしています:"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +12967,10 @@ msgstr "現在のプランで作成できるチーム数の上限に達しまし
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "今月のドキュメント作成数の上限に達しました。プランをアップグレードしてください。"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "このプランで作成できる文書数の上限に達しました。"
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13327,7 +13421,7 @@ msgstr "ドキュメントはテンプレートとして保存されました。
msgid "Your document has been sent successfully."
msgstr "文書を正常に送信しました。"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "文書を正常に複製しました。"
@@ -13394,10 +13488,6 @@ msgstr "封筒を正常に送信しました。"
msgid "Your envelope has been resent successfully."
msgstr "封筒を正常に再送信しました。"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "封筒を正常に複製しました。"
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "既存のトークン"
@@ -13494,13 +13584,9 @@ msgstr "チームは正常に更新されました。"
msgid "Your template has been created successfully"
msgstr "テンプレートは正常に作成されました"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
msgstr "テンプレート正常に複製ました。"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "テンプレートは正常に削除されました。"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "テンプレート正常に複製されました。"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
@@ -13515,10 +13601,6 @@ msgstr "テンプレートは正常に更新されました"
msgid "Your template has been uploaded successfully."
msgstr "テンプレートを正常にアップロードしました。"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "テンプレートは複製されます。"
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "あなたのテンプレート"
+168 -86
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-04-22 14:34\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -45,10 +45,6 @@ msgstr "“{documentName}” 문서가 서명되었습니다."
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}” 문서가 모든 서명자에게서 서명을 완료했습니다."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\"이(가) 성공적으로 삭제되었습니다."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\"이(가) \"Team Name\"을(를) 대신하여 \"example document\"에 서명하도록 귀하를 초대했습니다."
@@ -57,6 +53,10 @@ msgstr "\"{placeholderEmail}\"이(가) \"Team Name\"을(를) 대신하여 \"exam
msgid "\"{title}\" has been successfully deleted"
msgstr "\"{title}\"이(가) 성공적으로 삭제되었습니다."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "\"{title}\"이(가) 성공적으로 숨겨졌습니다"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Team Name\"이(가) \"example document\"에 서명하도록 귀하를 초대했습니다."
@@ -301,14 +301,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, other {일}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, other {개월}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, other {주}}"
@@ -1143,6 +1146,7 @@ msgstr "동작"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1488,7 +1492,6 @@ msgstr "모든 이메일 도메인이 성공적으로 동기화되었습니다."
msgid "All Folders"
msgstr "모든 폴더"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "삽입된 모든 서명이 무효화됩니다"
@@ -1501,7 +1504,6 @@ msgstr "모든 항목은 동일한 유형이어야 합니다."
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "모든 수신자가 서명했습니다. 문서를 처리 중이며 곧 서명된 문서의 사본이 이메일로 전송됩니다."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1599,6 +1601,8 @@ msgstr "각 구성원에게 초대장이 포함된 이메일이 발송됩니다.
msgid "An email with this address already exists."
msgstr "이 이메일 주소를 사용하는 이메일이 이미 있습니다."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1694,6 @@ msgstr "직접 링크 서명을 비활성화하는 중 오류가 발생했습니
msgid "An error occurred while disabling the user."
msgstr "사용자를 비활성화하는 동안 오류가 발생했습니다."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "템플릿을 복제하는 중 오류가 발생했습니다."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "직접 링크 서명을 활성화하는 중 오류가 발생했습니다."
@@ -1933,6 +1933,7 @@ msgstr "승인"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "문서 승인"
@@ -1996,7 +1997,6 @@ msgstr "이 조직을 삭제하시겠습니까?"
msgid "Are you sure you wish to delete this team?"
msgstr "이 팀을 정말 삭제하시겠습니까?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2029,6 +2029,7 @@ msgstr "보조"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "문서 보조"
@@ -2302,7 +2303,6 @@ msgstr "이 요청을 수락하면 {0}에 다음 권한을 부여하게 됩니
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "이 요청을 수락하면 <0>{teamName}</0> 팀에 다음 권한을 부여하게 됩니다."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "이 문서를 삭제하면 다음 작업이 수행됩니다:"
@@ -2336,16 +2336,16 @@ msgid "Can't find someone?"
msgstr "누군가를 찾을 수 없나요?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2401,7 @@ msgstr "누군가를 찾을 수 없나요?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2777,10 @@ msgstr "템플릿의 일반 설정을 구성합니다."
msgid "Configure security settings for the document."
msgstr "문서의 보안 설정을 구성합니다."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "문서에 대한 서명 알림 설정을 구성합니다."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "템플릿 구성"
@@ -2807,6 +2809,10 @@ msgstr "각 그룹에 대한 팀 역할을 구성하세요."
msgid "Configure the team roles for each member"
msgstr "각 구성원에 대한 팀 역할을 구성하세요."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "아직 서명을 완료하지 않은 수신자에게 알림 이메일을 언제, 얼마나 자주 보낼지 구성합니다. 상속으로 설정된 경우 팀 기본값을 사용합니다."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2885,12 @@ msgid "Continue"
msgstr "계속"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "문서를 승인하여 계속 진행하세요."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "문서 보조를 통해 계속 진행하세요."
@@ -2891,10 +2899,12 @@ msgid "Continue by downloading the document."
msgstr "문서를 다운로드하여 계속 진행하세요."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "문서에 서명하여 계속 진행하세요."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "문서를 열람하여 계속 진행하세요."
@@ -2927,6 +2937,10 @@ msgstr "수신자에게 문서 서명을 요청할 때 전송되는 메시지의
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "문서 언어를 제어합니다. 이메일 알림에 사용되는 언어와 최종적으로 문서에 첨부되는 인증서의 언어도 포함됩니다."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "아직 서명을 완료하지 않은 수신자에게 알림 이메일을 언제, 얼마나 자주 보낼지 제어합니다."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "문서를 다운로드할 때 감사 로그를 문서에 포함할지 여부를 제어합니다. 감사 로그는 로그 페이지에서 별도로 계속 다운로드할 수 있습니다."
@@ -3313,6 +3327,10 @@ msgstr "사용자 정의 {0} MB 파일"
msgid "Custom duration"
msgstr "사용자 지정 기간"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "사용자 지정 간격"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "사용자 지정 조직 그룹"
@@ -3414,6 +3432,10 @@ msgstr "이 팀에 기본 설정이 적용되었습니다. 상속된 값은 조
msgid "Default Signature Settings"
msgstr "기본 서명 설정"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "기본 서명 알림"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "기본 시간대"
@@ -3437,13 +3459,11 @@ msgstr "문서 소유권 위임"
msgid "Delegate Document Ownership"
msgstr "문서 소유권 위임"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "delete"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3477,6 @@ msgstr "delete"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3813,14 +3832,6 @@ msgstr "DKIM 레코드가 생성되었습니다. 도메인을 인증하려면 DN
msgid "DNS Records"
msgstr "DNS 레코드"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "이 템플릿을 삭제하시겠습니까?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "이 템플릿을 복제하시겠습니까?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Documenso 라이선스"
@@ -3946,7 +3957,6 @@ msgid "Document Creation"
msgstr "문서 생성"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3977,7 +3987,7 @@ msgstr "문서 전송 방식"
msgid "Document draft"
msgstr "문서 초안"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "문서가 복제되었습니다"
@@ -3994,6 +4004,10 @@ msgstr "문서 외부 ID가 업데이트되었습니다."
msgid "Document found in your account"
msgstr "귀하의 계정에서 문서를 찾았습니다."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "문서가 숨겨졌습니다"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4109,7 +4123,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "문서 서명 인증이 업데이트되었습니다."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "문서 서명 프로세스가 취소됩니다"
@@ -4188,7 +4201,6 @@ msgstr "문서 공개 범위가 업데이트되었습니다."
msgid "Document Volume"
msgstr "문서량"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "문서는 영구적으로 삭제됩니다"
@@ -4284,6 +4296,10 @@ msgstr "도메인 재등록됨"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "계정이 없으신가요? <0>가입하기</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "반복 안 함"
#: 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)"
@@ -4395,10 +4411,7 @@ msgstr "드롭다운 설정"
msgid "Dropdown values"
msgstr "드롭다운 값"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4781,6 +4794,7 @@ msgstr "팀 API 토큰을 활성화하여 문서 소유권을 다른 팀 구성
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "활성화됨"
@@ -4906,10 +4920,6 @@ msgstr "Enterprise"
msgid "Envelope distributed"
msgstr "봉투가 배포되었습니다"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "봉투가 복제되었습니다"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4963,7 +4973,6 @@ msgstr "봉투가 업데이트되었습니다"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5665,6 +5674,10 @@ msgstr "작동 방식은 다음과 같습니다:"
msgid "Hey Im Timur"
msgstr "안녕하세요, 저는 Timur입니다"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "{recipientName}님, 안녕하세요."
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "안녕하세요 {userName}님,"
@@ -5677,7 +5690,6 @@ msgstr "{userName}님, 문서 \"{documentTitle}\"을(를) 완료하려면 인증
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "안녕하세요, {userName}님 <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5866,6 +5878,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"
@@ -6568,6 +6581,14 @@ msgstr "구성원"
msgid "Member Count"
msgstr "구성원 수"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "구성원이 조직에서 제거되었습니다."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "구성원이 팀에서 제거되었습니다."
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "가입일"
@@ -6939,6 +6960,10 @@ msgstr "문서에서 감지된 수신자가 없습니다."
msgid "No recipients with this role"
msgstr "이 역할의 수신자가 없습니다."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "알림 없음"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7088,7 +7113,6 @@ msgstr "이 페이지에서 API 토큰을 생성하고 관리할 수 있습니
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "이 페이지에서 새 웹훅을 생성하고 기존 웹훅을 관리할 수 있습니다."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7654,7 +7678,6 @@ msgstr "이메일을 확인해 주세요."
msgid "Please confirm your email address"
msgstr "이메일 주소를 확인해 주세요."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "이 작업을 되돌리려면 지원팀에 문의해 주세요."
@@ -7713,13 +7736,11 @@ msgstr "포털을 통해 로그인하는 사용자는 모두 조직의 구성원
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "이 작업을 계속하면 직접 링크 수신자가 제거되고 플레이스홀더로 변경됩니다."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "이 작업은 <0>되돌릴 수 없습니다</0>."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "이 작업은 <0>되돌릴 수 없습니다</0>. 확인되면 이 문서는 영구적으로 삭제됩니다."
@@ -7728,10 +7749,6 @@ msgstr "이 작업은 <0>되돌릴 수 없습니다</0>. 확인되면 이 문서
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "이 작업은 <0>되돌릴 수 없습니다</0>. 한 번 확인하면 이 템플릿은 영구적으로 삭제됩니다."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "이 작업은 되돌릴 수 없습니다. 확인되면 템플릿이 영구적으로 삭제됩니다."
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "이 작업은 되돌릴 수 없습니다. 확인되면 토큰이 영구적으로 삭제됩니다."
@@ -7792,9 +7809,7 @@ msgstr "이메일 주소를 올바르게 입력했는지 확인한 후 다시
msgid "Please try again or contact our support."
msgstr "다시 시도하거나 고객 지원팀에 문의해 주세요."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "확인하려면 {0}을(를) 입력하세요."
@@ -8184,7 +8199,6 @@ msgstr "새 문서에 자동으로 추가될 수신인들입니다."
msgid "Recipients will be able to sign the document once sent"
msgstr "수신자는 문서가 전송된 후 서명할 수 있습니다"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "수신자는 여전히 문서 사본을 보관합니다"
@@ -8276,16 +8290,32 @@ msgstr "새로고침"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "비밀번호가 기억나시나요? <0>로그인</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "{documentName} {action} 알림"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "알림: {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "알림: {0}에서 문서에 {recipientActionVerb}하도록 초대했습니다."
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "알림: 문서를 {0}하세요<0/>\"{documentName}\""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "알림: \"{0}\" 문서를 {recipientActionVerb}해 주세요"
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "알림: 이 문서를 {recipientActionVerb}해 주세요."
@@ -8294,6 +8324,12 @@ msgstr "알림: 이 문서를 {recipientActionVerb}해 주세요."
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "알림: 귀하의 문서를 {recipientActionVerb}해 주세요."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "알림"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8320,6 +8356,11 @@ msgstr "제거"
msgid "Remove email domain"
msgstr "이메일 도메인 제거"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "구성원 제거"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8329,6 +8370,10 @@ msgstr "조직 그룹 제거"
msgid "Remove organisation member"
msgstr "조직 구성원 제거"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "조직 구성원 제거"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "수신자 제거"
@@ -8342,6 +8387,10 @@ msgstr "팀 이메일 제거"
msgid "Remove team member"
msgstr "팀 구성원 제거"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "팀 구성원 제거"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8993,6 +9042,10 @@ msgstr "생성된 문서를 즉시 수신자에게 전송"
msgid "Send Envelope"
msgstr "봉투 보내기"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "첫 알림 전송 시점"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "팀을 대신해 발송"
@@ -9156,6 +9209,7 @@ msgstr "문서 서명"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "문서 서명"
@@ -9354,6 +9408,10 @@ msgstr "이 문서에 대한 서명 링크가 생성되었습니다."
msgid "Signing order is enabled."
msgstr "서명 순서가 활성화되어 있습니다."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "서명 알림"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "서명 상태"
@@ -9405,8 +9463,6 @@ msgstr "건너뛰기"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "일부 서명자에게 서명 필드가 할당되지 않았습니다. 진행하기 전에 각 서명자에게 최소 1개 이상의 서명 필드를 할당해 주세요."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9419,7 +9475,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9665,8 +9720,10 @@ msgid "Subscription Status"
msgstr "구독 상태"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10048,7 @@ msgstr "템플릿(레거시)"
msgid "Template Created"
msgstr "템플릿이 생성되었습니다"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "템플릿이 삭제되었습니다"
@@ -9999,9 +10056,9 @@ msgstr "템플릿이 삭제되었습니다"
msgid "Template document uploaded"
msgstr "템플릿 문서가 업로드되었습니다"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
msgstr "템플릿이 복제되었습니다"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "템플릿이 복제되었습니다."
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
msgid "Template Editor"
@@ -10015,6 +10072,10 @@ msgstr "템플릿이 공개 프로필에서 제거되었습니다."
msgid "Template has been updated."
msgstr "템플릿이 업데이트되었습니다."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "템플릿이 숨겨졌습니다."
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "템플릿 ID(레거시)"
@@ -10184,6 +10245,10 @@ msgstr "직접 링크가 클립보드에 복사되었습니다"
msgid "The display name for this email address"
msgstr "이 이메일 주소의 표시 이름입니다."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "정보가 없거나 유효하지 않아 문서를 생성할 수 없습니다. 템플릿의 수신인과 필드를 다시 확인해 주세요."
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "문서가 성공적으로 삭제되었습니다."
@@ -10224,7 +10289,6 @@ msgstr "문서 소유권이 {1}를 대신하여 {0}에게 위임되었습니다"
msgid "The document was created but could not be sent to recipients."
msgstr "문서는 생성되었지만 수신자에게 발송되지 않았습니다."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "문서는 계정에서 숨겨집니다"
@@ -10453,6 +10517,10 @@ msgstr "찾고 있는 팀은 삭제되었거나 이름이 변경되었거나 처
msgid "The template has been moved successfully."
msgstr "템플릿이 성공적으로 이동되었습니다."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "템플릿 또는 그 수신인 중 하나를 찾을 수 없습니다."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "템플릿은 프로필에서 제거됩니다"
@@ -10530,6 +10598,10 @@ msgstr "웹훅이 성공적으로 생성되었습니다."
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "찾고 있는 웹후크는 삭제되었거나 이름이 변경되었거나 처음부터 존재하지 않았을 수 있습니다."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "그 후 반복 주기"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "현재 활성 초안이 없습니다. 문서를 업로드하여 초안을 작성할 수 있습니다."
@@ -10572,6 +10644,8 @@ msgstr "이 작업은 되돌릴 수 없습니다. 진행하기 전에 사용자
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "이 작업은 되돌릴 수 없습니다. 신중히 결정해 주세요."
@@ -10597,7 +10671,6 @@ msgstr "이 문서는 복구할 수 없습니다. 향후 문서에 대한 삭제
msgid "This document cannot be changed"
msgstr "이 문서는 변경할 수 없습니다."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "현재 이 문서를 삭제할 수 없습니다. 다시 시도해 주세요."
@@ -10606,7 +10679,6 @@ msgstr "현재 이 문서를 삭제할 수 없습니다. 다시 시도해 주세
msgid "This document could not be downloaded at this time. Please try again."
msgstr "현재 이 문서를 다운로드할 수 없습니다. 다시 시도해 주세요."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "현재 이 문서를 복제할 수 없습니다. 다시 시도해 주세요."
@@ -10772,10 +10844,14 @@ msgstr "이 서명자는 이미 문서에 서명했습니다."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "이 팀과 관련된 데이터(청구서 제외)는 영구적으로 삭제됩니다."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "현재 이 템플릿을 삭제할 수 없습니다. 다시 시도해 주세요."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "현재 이 템플릿을 복제할 수 없습니다. 다시 시도해 주세요."
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "이 템플릿은 기존(레거시) 필드 삽입 방식을 사용하고 있습니다. 더 정확한 결과를 위해 새로운 필드 삽입 방식을 사용하는 것을 권장합니다."
@@ -10879,6 +10955,10 @@ msgstr "제목은 비워 둘 수 없습니다."
msgid "To accept this invitation you must create an account."
msgstr "이 초대를 수락하려면 계정을 생성해야 합니다."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "이 팀에 구성원을 추가하려면 먼저 조직에 초대해야 합니다. 새 구성원은 조직 관리자와 매니저만 초대할 수 있으니, 대신 초대를 요청하려면 관리자나 매니저 중 한 명에게 문의하세요."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "이 팀에 구성원을 추가하려면 먼저 그들을 조직에 추가해야 합니다."
@@ -11818,6 +11898,7 @@ msgstr "문서 보기"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11984,6 +12065,11 @@ msgstr "Stripe 고객을 생성하지 못했습니다. 다시 시도해 주세
msgid "We couldn't enable AI features right now. Please try again."
msgstr "지금은 AI 기능을 활성화할 수 없습니다. 다시 시도해 주세요."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "이 구성원을 제거할 수 없습니다. 나중에 다시 시도해 주세요."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "그룹을 업데이트하지 못했습니다. 다시 시도해 주세요."
@@ -12246,6 +12332,10 @@ msgstr "현재 문서 환경설정을 업데이트할 수 없습니다. 나중
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "현재 이메일 기본 설정을 업데이트할 수 없습니다. 잠시 후 다시 시도해 주세요."
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
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-signing/document-signing-auth-password.tsx
@@ -12479,10 +12569,6 @@ msgstr "다음 문서에 대한 서명을 완료하려고 합니다"
msgid "You are about to complete viewing the following document"
msgstr "다음 문서에 대한 열람을 완료하려고 합니다"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "<0>\"{documentTitle}\"</0>을(를) 삭제하려고 합니다"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "다음 항목을 삭제하려고 합니다: <0>\"{title}\"</0>"
@@ -12500,10 +12586,6 @@ msgstr "<0>{teamName}</0>에서 다음 팀 이메일을 삭제하려고 합니
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "모든 조직 구성원에게 조직 역할에 따라 이 팀에 대한 액세스를 부여하려고 합니다."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "<0>\"{documentTitle}\"</0>을(를) 숨기려고 합니다"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "다음 항목을 숨기려고 합니다: <0>\"{title}\"</0>"
@@ -12555,6 +12637,14 @@ msgstr "곧 다음 사용자를 <0>{0}</0>에서 제거하려고 합니다."
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "<0>{teamName}</0>에서 다음 사용자를 제거하려고 합니다."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "다음 사용자를 조직 <0>{organisationName}</0>에서 제거하려고 합니다."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "다음 사용자를 팀 <0>{teamName}</0>에서 제거하려고 합니다:"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +12967,10 @@ msgstr "현재 요금제에서 만들 수 있는 팀 수의 최대치에 도달
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "이번 달 문서 업로드 한도에 도달했습니다. 요금제를 업그레이드해 주세요."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "현재 요금제에서 생성할 수 있는 문서 한도에 도달했습니다."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13327,7 +13421,7 @@ msgstr "문서가 템플릿으로 저장되었습니다."
msgid "Your document has been sent successfully."
msgstr "문서가 성공적으로 발송되었습니다."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "문서가 성공적으로 복제되었습니다."
@@ -13394,10 +13488,6 @@ msgstr "봉투가 성공적으로 배포되었습니다."
msgid "Your envelope has been resent successfully."
msgstr "봉투가 성공적으로 다시 전송되었습니다."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "봉투가 성공적으로 복제되었습니다."
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "기존 토큰"
@@ -13494,14 +13584,10 @@ msgstr "팀이 성공적으로 업데이트되었습니다."
msgid "Your template has been created successfully"
msgstr "템플릿이 성공적으로 생성되었습니다."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "템플릿이 성공적으로 복제되었습니다."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "템플릿이 성공적으로 삭제되었습니다."
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
msgstr "템플릿 이름이 성공적으로 변경되었습니다."
@@ -13515,10 +13601,6 @@ msgstr "템플릿이 성공적으로 업데이트되었습니다."
msgid "Your template has been uploaded successfully."
msgstr "템플릿이 성공적으로 업로드되었습니다."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "템플릿이 복제됩니다."
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "내 템플릿"
+167 -85
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: nl\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-04-22 14:34\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -45,10 +45,6 @@ msgstr "\"{documentName}\" is ondertekend"
msgid "“{documentName}” was signed by all signers"
msgstr "\"{documentName}\" is door alle ondertekenaars ondertekend"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" is succesvol verwijderd."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\" heeft namens \"Team Name\" je uitgenodigd om \"example document\" te ondertekenen."
@@ -57,6 +53,10 @@ msgstr "\"{placeholderEmail}\" heeft namens \"Team Name\" je uitgenodigd om \"ex
msgid "\"{title}\" has been successfully deleted"
msgstr "\"{title}\" is succesvol verwijderd"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "\"{title}\" is succesvol verborgen"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Team Name\" heeft je uitgenodigd om \"example document\" te ondertekenen."
@@ -301,14 +301,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, one {Dag} other {Dagen}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, one {Maand} other {Maanden}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, one {Week} other {Weken}}"
@@ -1143,6 +1146,7 @@ msgstr "Actie"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1488,7 +1492,6 @@ msgstr "Alle e-maildomeinen zijn succesvol gesynchroniseerd"
msgid "All Folders"
msgstr "Alle mappen"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "Alle ingevoerde handtekeningen worden ongeldig gemaakt"
@@ -1501,7 +1504,6 @@ msgstr "Alle items moeten van hetzelfde type zijn."
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "Alle ontvangers hebben ondertekend. Het document wordt verwerkt en u ontvangt binnenkort een kopie per e-mail."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1599,6 +1601,8 @@ msgstr "Naar elk lid wordt een email met een uitnodiging gestuurd."
msgid "An email with this address already exists."
msgstr "Er bestaat al een e-mailadres met dit adres."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1694,6 @@ msgstr "Er is een fout opgetreden bij het uitschakelen van ondertekenen via dire
msgid "An error occurred while disabling the user."
msgstr "Er is een fout opgetreden tijdens het uitschakelen van de gebruiker."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "Er is een fout opgetreden bij het dupliceren van de sjabloon."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "Er is een fout opgetreden bij het inschakelen van ondertekenen via directe link."
@@ -1933,6 +1933,7 @@ msgstr "Goedkeuren"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "Document goedkeuren"
@@ -1996,7 +1997,6 @@ msgstr "Weet je zeker dat je deze organisatie wilt verwijderen?"
msgid "Are you sure you wish to delete this team?"
msgstr "Weet je zeker dat je dit team wilt verwijderen?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2029,6 +2029,7 @@ msgstr "Assisteren"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "Document assisteren"
@@ -2302,7 +2303,6 @@ msgstr "Door dit verzoek te accepteren, geef je {0} de volgende rechten:"
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "Door dit verzoek te accepteren, geef je <0>{teamName}</0> toegang tot:"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "Door dit document te verwijderen, gebeurt het volgende:"
@@ -2336,16 +2336,16 @@ msgid "Can't find someone?"
msgstr "Kunt u niemand vinden?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2401,7 @@ msgstr "Kunt u niemand vinden?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2777,10 @@ msgstr "Configureer algemene instellingen voor de sjabloon."
msgid "Configure security settings for the document."
msgstr "Beveiligingsinstellingen voor het document configureren."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "Configureer herinneringsinstellingen voor ondertekening voor het document."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "Sjabloon configureren"
@@ -2807,6 +2809,10 @@ msgstr "Configureer de teamrollen voor elke groep"
msgid "Configure the team roles for each member"
msgstr "Configureer de teamrollen voor elk lid"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "Configureer wanneer en hoe vaak herinneringsmails worden verzonden naar ontvangers die het ondertekenen nog niet hebben voltooid. De standaardinstelling van het team wordt gebruikt wanneer \"overerven\" is geselecteerd."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2885,12 @@ msgid "Continue"
msgstr "Doorgaan"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "Ga verder door het document goed te keuren."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "Ga verder door het document te assisteren."
@@ -2891,10 +2899,12 @@ msgid "Continue by downloading the document."
msgstr "Ga verder door het document te downloaden."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "Ga verder door het document te ondertekenen."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "Ga verder door het document te bekijken."
@@ -2927,6 +2937,10 @@ msgstr "Bepaalt de opmaak van het bericht dat wordt verzonden bij het uitnodigen
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "Bepaalt de taal van het document, inclusief de taal van e-mailmeldingen en het uiteindelijke certificaat dat wordt gegenereerd en aan het document wordt toegevoegd."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "Bepaalt wanneer en hoe vaak herinneringsmails worden verzonden naar ontvangers die het ondertekenen nog niet hebben voltooid."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "Bepaalt of de auditlogs worden opgenomen in het document wanneer het wordt gedownload. De auditlogs kunnen nog steeds apart vanaf de logpagina worden gedownload."
@@ -3313,6 +3327,10 @@ msgstr "Aangepast {0} MB-bestand"
msgid "Custom duration"
msgstr "Aangepaste duur"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "Aangepast interval"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "Aangepaste organisatiegroepen"
@@ -3414,6 +3432,10 @@ msgstr "Standaardinstellingen toegepast op dit team. Overgenomen waarden komen v
msgid "Default Signature Settings"
msgstr "Standaardinstellingen voor handtekeningen"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "Standaardherinneringen voor ondertekening"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "Standaardtijdzone"
@@ -3437,13 +3459,11 @@ msgstr "Documenteigendom delegeren"
msgid "Delegate Document Ownership"
msgstr "Documenteigendom delegeren"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "verwijderen"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3477,6 @@ msgstr "verwijderen"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3813,14 +3832,6 @@ msgstr "DKIM-records gegenereerd. Voeg de DNS-records toe om je domein te verifi
msgid "DNS Records"
msgstr "DNS-records"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "Wil je deze sjabloon verwijderen?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "Wil je deze sjabloon dupliceren?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Documenso-licentie"
@@ -3946,7 +3957,6 @@ msgid "Document Creation"
msgstr "Documentcreatie"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3977,7 +3987,7 @@ msgstr "Methode voor documentdistributie"
msgid "Document draft"
msgstr "Documentconcept"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "Document gedupliceerd"
@@ -3994,6 +4004,10 @@ msgstr "Externe document-ID bijgewerkt"
msgid "Document found in your account"
msgstr "Document gevonden in je account"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "Document verborgen"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4109,7 +4123,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "Documentondertekeningsautorisatie bijgewerkt"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "Het ondertekeningsproces van het document wordt geannuleerd"
@@ -4188,7 +4201,6 @@ msgstr "Documentzichtbaarheid bijgewerkt"
msgid "Document Volume"
msgstr "Documentvolume"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "Document wordt permanent verwijderd"
@@ -4284,6 +4296,10 @@ msgstr "Domein opnieuw geregistreerd"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "Nog geen account? <0>Registreer</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "Niet herhalen"
#: 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)"
@@ -4395,10 +4411,7 @@ msgstr "Instellingen dropdown"
msgid "Dropdown values"
msgstr "Dropdownwaarden"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4781,6 +4794,7 @@ msgstr "Schakel team-API-tokens in om documenteigendom aan een ander teamlid te
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "Ingeschakeld"
@@ -4906,10 +4920,6 @@ msgstr "Enterprise"
msgid "Envelope distributed"
msgstr "Envelope gedistribueerd"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "Envelope gedupliceerd"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4963,7 +4973,6 @@ msgstr "Envelope bijgewerkt"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5665,6 +5674,10 @@ msgstr "Zo werkt het:"
msgid "Hey Im Timur"
msgstr "Hoi, ik ben Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Hoi {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Hallo {userName},"
@@ -5677,7 +5690,6 @@ msgstr "Hallo {userName}, u moet een verificatiecode invoeren om het document \"
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "Hoi, {userName} <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5866,6 +5878,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"
@@ -6568,6 +6581,14 @@ msgstr "Lid"
msgid "Member Count"
msgstr "Aantal leden"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "Lid is verwijderd uit de organisatie."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "Lid is verwijderd uit het team."
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "Lid sinds"
@@ -6939,6 +6960,10 @@ msgstr "Er zijn geen ontvangers in uw document gedetecteerd."
msgid "No recipients with this role"
msgstr "Geen ontvangers met deze rol"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "Geen herinneringen"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7088,7 +7113,6 @@ msgstr "Op deze pagina kun je API-tokens aanmaken en beheren. Zie onze <0>docume
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "Op deze pagina kun je nieuwe webhooks aanmaken en bestaande beheren."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7654,7 +7678,6 @@ msgstr "Bevestig je e-mailadres"
msgid "Please confirm your email address"
msgstr "Bevestig je e-mailadres"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "Neem contact op met support als je deze actie ongedaan wilt maken."
@@ -7713,13 +7736,11 @@ msgstr "Let op: iedereen die via uw portaal inlogt, wordt als lid aan uw organis
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Let op: doorgaan verwijdert de ontvanger voor direct linken en verandert deze in een placeholder."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "Let op: deze actie is <0>onomkeerbaar</0>."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "Let op: deze actie is <0>onomkeerbaar</0>. Na bevestiging wordt dit document permanent verwijderd."
@@ -7728,10 +7749,6 @@ msgstr "Let op: deze actie is <0>onomkeerbaar</0>. Na bevestiging wordt dit docu
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "Houd er rekening mee dat deze actie <0>onomkeerbaar</0> is. Zodra je dit bevestigt, wordt dit sjabloon permanent verwijderd."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Let op: deze actie is onomkeerbaar. Na bevestiging wordt je sjabloon permanent verwijderd."
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "Let op: deze actie is onomkeerbaar. Na bevestiging wordt je token permanent verwijderd."
@@ -7792,9 +7809,7 @@ msgstr "Probeer het opnieuw en controleer of je het juiste emailadres hebt in
msgid "Please try again or contact our support."
msgstr "Probeer het opnieuw of neem contact op met onze ondersteuning."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "Typ {0} om te bevestigen."
@@ -8184,7 +8199,6 @@ msgstr "Ontvangers die automatisch aan nieuwe documenten worden toegevoegd."
msgid "Recipients will be able to sign the document once sent"
msgstr "Ontvangers kunnen het document ondertekenen zodra het is verzonden"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "Ontvangers behouden nog steeds hun kopie van het document"
@@ -8276,16 +8290,32 @@ msgstr "Opnieuw laden"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "Weet je je wachtwoord weer? <0>Log in</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "Herinnering om {action} {documentName}"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "Herinnering: {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "Herinnering: {0} heeft je uitgenodigd om een document te {recipientActionVerb}"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "Herinnering: Gelieve {0} uw document<0/>\"{documentName}\""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "Herinnering: Gelieve het document \"{0}\" te {recipientActionVerb}"
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "Herinnering: {recipientActionVerb} dit document"
@@ -8294,6 +8324,12 @@ msgstr "Herinnering: {recipientActionVerb} dit document"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Herinnering: {recipientActionVerb} je document"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "Herinneringen"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8320,6 +8356,11 @@ msgstr "Verwijderen"
msgid "Remove email domain"
msgstr "E-maildomein verwijderen"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "Lid verwijderen"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8329,6 +8370,10 @@ msgstr "Organisatiegroep verwijderen"
msgid "Remove organisation member"
msgstr "Organisatielid verwijderen"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "Organisatielid verwijderen"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "Ontvanger verwijderen"
@@ -8342,6 +8387,10 @@ msgstr "Teamemail verwijderen"
msgid "Remove team member"
msgstr "Teamlid verwijderen"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "Teamlid verwijderen"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8993,6 +9042,10 @@ msgstr "Documenten direct naar ontvangers verzenden"
msgid "Send Envelope"
msgstr "Envelope verzenden"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "Eerste herinnering verzenden na"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "Verzenden namens team"
@@ -9156,6 +9209,7 @@ msgstr "Document ondertekenen"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "Document ondertekenen"
@@ -9354,6 +9408,10 @@ msgstr "Voor dit document zijn ondertekeningslinks gegenereerd."
msgid "Signing order is enabled."
msgstr "Ondertekeningsvolgorde is ingeschakeld."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "Herinneringen voor ondertekening"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "Ondertekeningsstatus"
@@ -9405,8 +9463,6 @@ msgstr "Overslaan"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Sommige ondertekenaars hebben geen handtekeningveld toegewezen gekregen. Wijs ten minste 1 handtekeningveld toe aan elke ondertekenaar voordat je doorgaat."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9419,7 +9475,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9665,8 +9720,10 @@ msgid "Subscription Status"
msgstr "Abonnementsstatus"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10048,7 @@ msgstr "Sjabloon (verouderd)"
msgid "Template Created"
msgstr "Sjabloon aangemaakt"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "Sjabloon verwijderd"
@@ -9999,8 +10056,8 @@ msgstr "Sjabloon verwijderd"
msgid "Template document uploaded"
msgstr "Sjabloondocument geüpload"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "Sjabloon gedupliceerd"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
@@ -10015,6 +10072,10 @@ msgstr "Sjabloon is verwijderd uit je openbare profiel."
msgid "Template has been updated."
msgstr "Sjabloon is bijgewerkt."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "Sjabloon verborgen"
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "Sjabloon-ID (verouderd)"
@@ -10184,6 +10245,10 @@ msgstr "De directe link is naar je klembord gekopieerd"
msgid "The display name for this email address"
msgstr "De weergavenaam voor dit e-mailadres"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "Het document kon niet worden gemaakt vanwege ontbrekende of ongeldige informatie. Controleer de ontvangers en velden van de sjabloon."
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "Het document is succesvol verwijderd."
@@ -10224,7 +10289,6 @@ msgstr "De eigendom van het document is gedelegeerd aan {0} namens {1}"
msgid "The document was created but could not be sent to recipients."
msgstr "Het document is aangemaakt, maar kon niet naar ontvangers worden verzonden."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "Het document wordt verborgen in je account"
@@ -10453,6 +10517,10 @@ msgstr "Het team dat u zoekt, is mogelijk verwijderd, hernoemd of heeft misschie
msgid "The template has been moved successfully."
msgstr "De sjabloon is succesvol verplaatst."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "De sjabloon of een van de ontvangers kon niet worden gevonden."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "De sjabloon wordt verwijderd uit je profiel"
@@ -10530,6 +10598,10 @@ msgstr "De webhook is succesvol aangemaakt."
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "De webhook waar u naar zoekt, is mogelijk verwijderd, hernoemd of heeft misschien nooit bestaan."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "Daarna herhalen elke"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "Er zijn momenteel geen actieve concepten. Upload een document om een concept te starten."
@@ -10572,6 +10644,8 @@ msgstr "Deze actie is onomkeerbaar. Zorg dat u de gebruiker heeft geïnformeerd
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "Deze actie kan niet ongedaan worden gemaakt. Wees zeker."
@@ -10597,7 +10671,6 @@ msgstr "Dit document kan niet worden teruggezet. Als je de reden voor toekomstig
msgid "This document cannot be changed"
msgstr "Dit document kan niet worden gewijzigd"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "Dit document kan nu niet worden verwijderd. Probeer het opnieuw."
@@ -10606,7 +10679,6 @@ msgstr "Dit document kan nu niet worden verwijderd. Probeer het opnieuw."
msgid "This document could not be downloaded at this time. Please try again."
msgstr "Dit document kon op dit moment niet worden gedownload. Probeer het opnieuw."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Dit document kan nu niet worden gedupliceerd. Probeer het opnieuw."
@@ -10772,10 +10844,14 @@ msgstr "Deze ondertekenaar heeft het document al ondertekend."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Dit team en alle bijbehorende gegevens, met uitzondering van facturen, worden permanent verwijderd."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "Deze sjabloon kan nu niet worden verwijderd. Probeer het opnieuw."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "Dit sjabloon kon op dit moment niet worden gedupliceerd. Probeer het opnieuw."
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "Deze sjabloon gebruikt verouderde veldinvoeging. We raden aan de nieuwe methode voor veldinvoeging te gebruiken voor nauwkeurigere resultaten."
@@ -10879,6 +10955,10 @@ msgstr "Titel mag niet leeg zijn"
msgid "To accept this invitation you must create an account."
msgstr "Om deze uitnodiging te accepteren, moet je een account aanmaken."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "Om leden aan dit team toe te voegen, moeten ze eerst voor de organisatie worden uitgenodigd. Alleen organisatiebeheerders en -managers kunnen nieuwe leden uitnodigen — neem contact op met een van hen om namens jou leden uit te nodigen."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "Om leden aan dit team toe te voegen, moet u ze eerst aan de organisatie toevoegen."
@@ -11818,6 +11898,7 @@ msgstr "Document bekijken"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11984,6 +12065,11 @@ msgstr "We konden geen Stripe-klant aanmaken. Probeer het opnieuw."
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/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "We konden dit lid niet verwijderen. Probeer het later 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."
@@ -12246,6 +12332,10 @@ msgstr "We konden je documentvoorkeuren nu niet bijwerken; probeer het later opn
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "We konden je e-mailvoorkeuren op dit moment niet bijwerken, probeer het later opnieuw"
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
msgstr "We konden niet verifiëren dat je een mens bent. Probeer het opnieuw."
#: 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-signing/document-signing-auth-password.tsx
@@ -12479,10 +12569,6 @@ msgstr "U staat op het punt het volgende document te ondertekenen"
msgid "You are about to complete viewing the following document"
msgstr "U staat op het punt het volgende document te bekijken"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "Je staat op het punt <0>\"{documentTitle}\"</0> te verwijderen"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "Je staat op het punt om <0>\"{title}\"</0> te verwijderen"
@@ -12500,10 +12586,6 @@ msgstr "Je staat op het punt de volgende teamemail te verwijderen uit <0>{
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "Je staat op het punt alle organisatieleden toegang te geven tot dit team onder hun organisatierol."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "Je staat op het punt <0>\"{documentTitle}\"</0> te verbergen"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "Je staat op het punt om <0>\"{title}\"</0> te verbergen"
@@ -12555,6 +12637,14 @@ msgstr "Je staat op het punt de volgende gebruiker te verwijderen uit <0>{0}</0>
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "Je staat op het punt de volgende gebruiker te verwijderen uit <0>{teamName}</0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "Je staat op het punt de volgende gebruiker uit de organisatie <0>{organisationName}</0> te verwijderen:"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "Je staat op het punt de volgende gebruiker uit het team <0>{teamName}</0> te verwijderen:"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +12967,10 @@ msgstr "Je hebt het maximale aantal teams voor je abonnement bereikt. Neem conta
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "Je hebt je documentlimiet voor deze maand bereikt. Upgrade je abonnement."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "Je hebt de documentlimiet voor dit abonnement bereikt."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13327,7 +13421,7 @@ msgstr "Je document is opgeslagen als sjabloon."
msgid "Your document has been sent successfully."
msgstr "Je document is succesvol verzonden."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "Je document is succesvol gedupliceerd."
@@ -13394,10 +13488,6 @@ msgstr "Uw envelop is succesvol verzonden."
msgid "Your envelope has been resent successfully."
msgstr "Uw envelop is succesvol opnieuw verzonden."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "Uw envelop is succesvol gedupliceerd."
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "Je bestaande tokens"
@@ -13494,14 +13584,10 @@ msgstr "Je team is succesvol bijgewerkt."
msgid "Your template has been created successfully"
msgstr "Je sjabloon is succesvol aangemaakt"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "Je sjabloon is succesvol gedupliceerd."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "Je sjabloon is succesvol verwijderd."
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
msgstr "Je template is succesvol hernoemd."
@@ -13515,10 +13601,6 @@ msgstr "Je sjabloon is succesvol bijgewerkt"
msgid "Your template has been uploaded successfully."
msgstr "Uw sjabloon is succesvol geüpload."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "Je sjabloon wordt gedupliceerd."
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "Uw templates"
+180 -98
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: pl\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-07 16:23\n"
"PO-Revision-Date: 2026-04-23 18:23\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"
@@ -45,10 +45,6 @@ msgstr "Dokument „{documentName}” został podpisany"
msgid "“{documentName}” was signed by all signers"
msgstr "Dokument „{documentName}” został podpisany przez wszystkich podpisujących"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "Dokument „{documentTitle}” został pomyślnie usunięty"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "Użytkownik „{placeholderEmail}” z zespołu „Zespół X” zaprosił Cię do podpisania dokumentu „ABC”."
@@ -57,6 +53,10 @@ msgstr "Użytkownik „{placeholderEmail}” z zespołu „Zespół X” zaprosi
msgid "\"{title}\" has been successfully deleted"
msgstr "Dokument „{title}” został usunięty"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "Dokument „{title}” został ukryty"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "„Zespół X” zaprosił Cię do podpisania dokumentu „ABC”."
@@ -301,14 +301,17 @@ msgid "{0}/{1}"
msgstr "Krok {0} z {1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, one {Dzień} few {Dni} many {Dni} other {Dnia}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, one {Miesiąc} few {Miesiące} many {Miesięcy} other {Miesiąca}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, one {Tydzień} few {Tygodnie} many {Tygodni} other {Tygodnia}}"
@@ -1143,6 +1146,7 @@ msgstr "Akcja"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1488,7 +1492,6 @@ msgstr "Wszystkie domeny zostały pomyślnie zsynchronizowane"
msgid "All Folders"
msgstr "Wszystkie foldery"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "Wszystkie wstawione podpisy zostaną unieważnione"
@@ -1501,7 +1504,6 @@ msgstr "Wszystkie elementy muszą być tego samego rodzaju."
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "Wszyscy odbiorcy podpisali dokument. Dokument jest przetwarzany i wkrótce otrzymasz jego kopię."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1599,6 +1601,8 @@ msgstr "Wiadomość z zaproszeniem zostanie wysłana do każdego użytkownika."
msgid "An email with this address already exists."
msgstr "Ten adres e-mail już istnieje."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1694,6 @@ msgstr "Wystąpił błąd podczas wyłączania podpisywania za pomocą bezpośre
msgid "An error occurred while disabling the user."
msgstr "Wystąpił błąd podczas wyłączania użytkownika."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "Wystąpił błąd podczas duplikowania szablonu."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "Wystąpił błąd podczas włączania podpisywania za pomocą bezpośredniego linku."
@@ -1933,6 +1933,7 @@ msgstr "Zatwierdź"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "Zatwierdź dokument"
@@ -1996,7 +1997,6 @@ msgstr "Czy na pewno chcesz usunąć organizację?"
msgid "Are you sure you wish to delete this team?"
msgstr "Czy na pewno chcesz usunąć zespół?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2029,6 +2029,7 @@ msgstr "Przygotuj"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "Przygotuj dokument"
@@ -2302,7 +2303,6 @@ msgstr "Akceptując prośbę, przyznasz zespołowi {0} następujące uprawnienia
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "Akceptując prośbę, umożliwisz zespołowi <0>{teamName}</0> na:"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "Usunięcie dokumentu spowoduje następujące skutki:"
@@ -2336,16 +2336,16 @@ msgid "Can't find someone?"
msgstr "Nie możesz kogoś znaleźć?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2401,7 @@ msgstr "Nie możesz kogoś znaleźć?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2777,10 @@ msgstr "Skonfiguruj ogólne ustawienia szablonu."
msgid "Configure security settings for the document."
msgstr "Skonfiguruj ustawienia zabezpieczeń dokumentu."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "Skonfiguruj ustawienia przypomnień o podpisaniu dokumentu."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "Skonfiguruj szablon"
@@ -2807,6 +2809,10 @@ msgstr "Skonfiguruj role w zespole dla każdej grupy"
msgid "Configure the team roles for each member"
msgstr "Skonfiguruj role w zespole dla każdego użytkownika"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "Skonfiguruj, kiedy i jak często przypomnienia e-mail są wysyłane do odbiorców, którzy jeszcze nie ukończyli podpisywania. Gdy ustawione na dziedziczenie, używane są domyślne ustawienia zespołu."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2885,12 @@ msgid "Continue"
msgstr "Kontynuuj"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "Zatwierdź dokument."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "Przygotuj dokument."
@@ -2891,10 +2899,12 @@ msgid "Continue by downloading the document."
msgstr "Pobierz dokument."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "Podpisz dokument."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "Wyświetl dokument."
@@ -2927,6 +2937,10 @@ msgstr "Wiadomość, która zostanie wysłana do odbiorcy z zaproszeniem do podp
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "Wybierz język dokumentu, powiadomień i certyfikatu, który jest dołączany do dokumentu."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "Określa, kiedy i jak często przypomnienia e-mail są wysyłane do odbiorców, którzy jeszcze nie ukończyli podpisywania."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "Wybierz, czy dziennik logów ma zostać dołączony do dokumentu podczas jego pobierania. Dziennik logów możesz również pobrać osobno."
@@ -3290,7 +3304,7 @@ msgstr "Obecni odbiorcy:"
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
msgid "Current usage against organisation limits."
msgstr "Bieżące użycie względem limitów organizacji."
msgstr "Obecne użycie względem limitów organizacji."
#: apps/remix/app/components/general/teams/team-inherit-member-alert.tsx
msgid "Currently all organisation members can access this team"
@@ -3313,6 +3327,10 @@ msgstr "Niestandardowy plik {0} MB"
msgid "Custom duration"
msgstr "Niestandardowy czas"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "Własny interwał"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "Niestandardowe grupy w organizacji"
@@ -3404,16 +3422,20 @@ msgstr "Domyślni odbiorcy"
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
msgid "Default settings applied to this organisation."
msgstr "Domyślne ustawienia zastosowane do tej organizacji."
msgstr "Domyślne ustawienia organizacji."
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
msgid "Default settings applied to this team. Inherited values come from the organisation."
msgstr "Domyślne ustawienia zastosowane do tego zespołu. Wartości dziedziczone pochodzą z poziomu organizacji."
msgstr "Domyślne ustawienia zespołu. Zespoły dziedziczą domyślne ustawienia organizacji."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signature Settings"
msgstr "Domyślne rodzaje dozwolonych podpisów"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "Domyślne przypomnienia o podpisaniu"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "Domyślna strefa czasowa"
@@ -3437,13 +3459,11 @@ msgstr "Zmień właściciela dokumentu"
msgid "Delegate Document Ownership"
msgstr "Zmień właściciela dokumentu"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "usuń"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3477,6 @@ msgstr "usuń"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3813,14 +3832,6 @@ msgstr "Rekordy DKIM zostały wygenerowane. Dodaj te rekordy, aby zweryfikować
msgid "DNS Records"
msgstr "Rekordy DNS"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "Czy chcesz usunąć szablon?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "Czy chcesz zduplikować szablon?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Licencja Documenso"
@@ -3946,7 +3957,6 @@ msgid "Document Creation"
msgstr "Tworzenie dokumentu"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3977,9 +3987,9 @@ msgstr "Metoda dystrybucji dokumentu"
msgid "Document draft"
msgstr "Szkic dokumentu"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "Dokument został zduplikowany"
msgstr "Zduplikowano dokument"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
msgid "Document Editor"
@@ -3994,6 +4004,10 @@ msgstr "Zaktualizowano identyfikator zewnętrzny dokumentu"
msgid "Document found in your account"
msgstr "Znaleziono dokument na koncie"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "Ukryto dokument"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4109,7 +4123,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "Zaktualizowano metodę uwierzytelniania odbiorcy do dokumentu"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "Proces podpisywania dokumentu zostanie anulowany"
@@ -4188,7 +4201,6 @@ msgstr "Zaktualizowano widoczność dokumentu"
msgid "Document Volume"
msgstr "Liczba dokumentów"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "Dokument zostanie trwale usunięty"
@@ -4284,6 +4296,10 @@ msgstr "Domena została ponownie zarejestrowana"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "Nie masz konta? <0>Zarejestruj się</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "Nie powtarzaj"
#: 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)"
@@ -4395,10 +4411,7 @@ msgstr "Ustawienia listy rozwijanej"
msgid "Dropdown values"
msgstr "Wartości listy rozwijanej"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4629,7 +4642,7 @@ msgstr "Wyślij odbiorcom wiadomość z prośbą o podpisanie"
#: apps/remix/app/components/general/admin-global-settings-section.tsx
msgid "Email reply-to"
msgstr "Adres email do odpowiedzi (replyto)"
msgstr "Odpowiedz na adres"
#: packages/lib/utils/document-audit-logs.ts
msgctxt "Audit log format"
@@ -4781,6 +4794,7 @@ msgstr "Włącz tokeny API zespołu, aby zmienić właściciela dokumentu na inn
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "Włączone"
@@ -4906,10 +4920,6 @@ msgstr "Enterprise"
msgid "Envelope distributed"
msgstr "Wysłano kopertę"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "Zduplikowano kopertę"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4963,7 +4973,6 @@ msgstr "Koperta została zaktualizowana"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5481,7 +5490,7 @@ msgstr "Domyślne metody uwierzytelniania odbiorcy"
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
msgid "Global Settings"
msgstr "Ustawienia globalne"
msgstr "Domyślne ustawienia"
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
@@ -5665,6 +5674,10 @@ msgstr "Jak to działa:"
msgid "Hey Im Timur"
msgstr "Cześć, jestem Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Cześć, {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Cześć, {userName}"
@@ -5677,7 +5690,6 @@ msgstr "Cześć {userName}, wpisz kod weryfikacyjny, aby zakończyć dokument
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "Cześć, {userName} <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5866,6 +5878,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"
@@ -6089,7 +6102,7 @@ msgstr "Dołączył {0}"
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
msgid "Key identifiers and relationships for this team."
msgstr "Kluczowe identyfikatory i powiązania dla tego zespołu."
msgstr "Identyfikatory i powiązania zespołu."
#: packages/lib/constants/i18n.ts
msgid "Korean"
@@ -6568,6 +6581,14 @@ msgstr "Użytkownik"
msgid "Member Count"
msgstr "Liczba użytkowników"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "Użytkownik został usunięty z organizacji."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "Użytkownik został usunięty z zespołu."
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "Data dołączenia"
@@ -6939,6 +6960,10 @@ msgstr "Nie wykryto żadnych odbiorców."
msgid "No recipients with this role"
msgstr "Brak odbiorców z tą rolą"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "Brak przypomnień"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7088,7 +7113,6 @@ msgstr "Na tej stronie możesz tworzyć i zarządzać tokenami API. Sprawdź <0>
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "Na tej stronie możesz utworzyć nowe webhooki i zarządzać obecnymi."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7302,7 +7326,7 @@ msgstr "Adres URL organizacji"
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
msgid "Organisation usage"
msgstr "Wykorzystanie organizacji"
msgstr "Użycie organizacji"
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
msgid "Organisation-level pending invites for this team's parent organisation."
@@ -7654,7 +7678,6 @@ msgstr "Potwierdź adres e-mail"
msgid "Please confirm your email address"
msgstr "Potwierdź adres e-mail"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "Skontaktuj się z pomocą techniczną, jeśli chcesz cofnąć tę akcję."
@@ -7713,13 +7736,11 @@ msgstr "Każdy, kto się zaloguje przez logowanie SSO, zostanie dodany do organi
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Spowoduje to usunięcie odbiorcy bezpośredniego linku na domyślny tekst."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "Ta akcja jest <0>nieodwracalna</0>."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "Ta akcja jest <0>nieodwracalna</0>. Dokument zostanie trwale usunięty."
@@ -7728,10 +7749,6 @@ msgstr "Ta akcja jest <0>nieodwracalna</0>. Dokument zostanie trwale usunięty."
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "Ta akcja jest <0>nieodwracalna</0>. Szablon zostanie trwale usunięty."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Ta akcja jest nieodwracalna. Szablon zostanie trwale usunięty."
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "Ta akcja jest nieodwracalna. Token zostanie trwale usunięty."
@@ -7792,9 +7809,7 @@ msgstr "Spróbuj ponownie i upewnij się, że adres e-mail jest prawidłowy."
msgid "Please try again or contact our support."
msgstr "Spróbuj ponownie lub skontaktuj się z naszym wsparciem."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "Wpisz {0}, aby potwierdzić"
@@ -8184,7 +8199,6 @@ msgstr "Odbiorcy, którzy będą automatycznie dodawani do nowych dokumentów."
msgid "Recipients will be able to sign the document once sent"
msgstr "Odbiorcy będą mogli podpisać dokument po jego wysłaniu"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "Odbiorcy zachowają swoją kopię dokumentu"
@@ -8276,16 +8290,32 @@ msgstr "Odśwież"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "Pamiętasz hasło? <0>Zaloguj się</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "Przypomnienie, aby {action} dokument „{documentName}”"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "Przypomnienie: {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "Przypomnienie: Sprawdź i {recipientActionVerb} dokument utworzony przez zespół {0}"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "Przypomnienie: Proszę {0} swój dokument<0/>„{documentName}”"
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "Przypomnienie: Proszę {recipientActionVerb} dokument „{0}”"
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "Przypomnienie: Sprawdź i {recipientActionVerb} dokument"
@@ -8294,6 +8324,12 @@ msgstr "Przypomnienie: Sprawdź i {recipientActionVerb} dokument"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Przypomnienie: Sprawdź i {recipientActionVerb} dokument"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "Przypomnienia"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8320,6 +8356,11 @@ msgstr "Usuń"
msgid "Remove email domain"
msgstr "Usuń domenę"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "Usuń użytkownika"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8329,6 +8370,10 @@ msgstr "Usuń grupę organizacji"
msgid "Remove organisation member"
msgstr "Usuń użytkownika organizacji"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "Usuń użytkownika organizacji"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "Usuń odbiorcę"
@@ -8342,6 +8387,10 @@ msgstr "Usuń adres e-mail zespołu"
msgid "Remove team member"
msgstr "Usuń użytkownika zespołu"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "Usuń użytkownika zespołu"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8993,6 +9042,10 @@ msgstr "Wyślij dokumenty do odbiorców natychmiast"
msgid "Send Envelope"
msgstr "Wyślij kopertę"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "Wyślij pierwsze przypomnienie po"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "Wyślij w imieniu zespołu"
@@ -9156,6 +9209,7 @@ msgstr "Podpisz dokument"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "Podpisz dokument"
@@ -9354,6 +9408,10 @@ msgstr "Linki do podpisywania zostały wygenerowane dla tego dokumentu."
msgid "Signing order is enabled."
msgstr "Kolejność podpisywania jest włączona."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "Przypomnienia o podpisaniu"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "Status podpisu"
@@ -9405,8 +9463,6 @@ msgstr "Pomiń"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Niektórym podpisującym nie przypisano pola podpisu. Przypisz co najmniej jedno pole podpisu do każdego podpisującego."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9419,7 +9475,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9665,8 +9720,10 @@ msgid "Subscription Status"
msgstr "Status subskrypcji"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10048,7 @@ msgstr "Szablon (starsza wersja)"
msgid "Template Created"
msgstr "Szablon został utworzony"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "Szablon został usunięty"
@@ -9999,9 +10056,9 @@ msgstr "Szablon został usunięty"
msgid "Template document uploaded"
msgstr "Szablon dokumentu został przesłany"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
msgstr "Szablon został zduplikowany"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "Zduplikowano szablon"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
msgid "Template Editor"
@@ -10015,6 +10072,10 @@ msgstr "Szablon został usunięty z profilu publicznego."
msgid "Template has been updated."
msgstr "Szablon został zaktualizowany."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "Ukryto szablon"
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "Identyfikator szablonu (starsza wersja)"
@@ -10184,6 +10245,10 @@ msgstr "Bezpośredni link został skopiowany do schowka"
msgid "The display name for this email address"
msgstr "Nazwa wyświetlana dla adresu e-mail"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "Nie można było utworzyć dokumentu z powodu brakujących lub nieprawidłowych informacji. Sprawdź odbiorców i pola szablonu."
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "Dokument został pomyślnie usunięty."
@@ -10224,7 +10289,6 @@ msgstr "Zmieniono właściciela dokumentu na {0} z zespołu {1}"
msgid "The document was created but could not be sent to recipients."
msgstr "Dokument został utworzony, ale nie mógł zostać wysłany do odbiorców."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "Dokument zostanie ukryty w Twoim koncie"
@@ -10453,6 +10517,10 @@ msgstr "Zespół, którego szukasz, mógł zostać usunięty, zmieniony lub móg
msgid "The template has been moved successfully."
msgstr "Szablon został pomyślnie przeniesiony."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "Nie można odnaleźć szablonu lub jednego z jego odbiorców."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "Szablon zostanie usunięty z Twojego profilu"
@@ -10516,7 +10584,7 @@ msgstr "Widoczność dokumentu dla odbiorcy."
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "The webhook has been successfully deleted."
msgstr "Webhook został pomyślnie usunięty."
msgstr "Webhook został usunięty."
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
msgid "The webhook has been updated successfully."
@@ -10530,6 +10598,10 @@ msgstr "Webhook został pomyślnie utworzony."
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "Webhook, którego szukasz, mógł zostać usunięty, zmieniony lub mógł nigdy nie istnieć."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "Następnie powtarzaj co"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "Brak aktywnych szkiców. Prześlij, aby utworzyć."
@@ -10572,6 +10644,8 @@ msgstr "Ta akcja jest nieodwracalna. Upewnij się, że użytkownik został poinf
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "Ta akcja jest nieodwracalna."
@@ -10597,7 +10671,6 @@ msgstr "Dokument nie może być odzyskany. Jeśli chcesz zakwestionować decyzj
msgid "This document cannot be changed"
msgstr "Nie można zmienić dokumentu"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "Nie można usunąć dokumentu. Spróbuj ponownie."
@@ -10606,7 +10679,6 @@ msgstr "Nie można usunąć dokumentu. Spróbuj ponownie."
msgid "This document could not be downloaded at this time. Please try again."
msgstr "Nie można pobrać dokumentu. Spróbuj ponownie."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Nie można zduplikować dokumentu. Spróbuj ponownie."
@@ -10772,10 +10844,14 @@ msgstr "Użytkownik już podpisał dokument."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Zespół i wszystkie powiązane dane (z wyjątkiem faktur) zostaną trwale usunięte."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "Nie można usunąć dokumentu. Spróbuj ponownie."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "Nie można zduplikować szablonu. Spróbuj ponownie."
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "Szablon używa starszej metody wstawiania pól. Zalecamy użycie nowej metody."
@@ -10879,6 +10955,10 @@ msgstr "Tytuł nie może być pusty"
msgid "To accept this invitation you must create an account."
msgstr "Aby zaakceptować zaproszenie, musisz utworzyć konto."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "Aby dodać użytkowników do zespołu, najpierw musisz dodać ich do organizacji. Tylko administratorzy i managerowie organizacji mogą zapraszać nowych użytkowników. Skontaktuj się z jednym z nich, aby zaprosili użytkowników w Twoim imieniu."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "Aby dodać użytkowników do zespołu, najpierw musisz dodać ich do organizacji."
@@ -11818,6 +11898,7 @@ msgstr "Wyświetl dokument"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11984,6 +12065,11 @@ msgstr "Nie mogliśmy utworzyć klienta Stripe. Spróbuj ponownie."
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/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "Nie mogliśmy usunąć tego użytkownika. Spróbuj ponownie później."
#: 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."
@@ -12246,6 +12332,10 @@ msgstr "Nie mogliśmy zaktualizować ustawień dokumentu. Spróbuj ponownie pó
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "Nie mogliśmy zaktualizować ustawień adresu e-mail. Spróbuj ponownie później"
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
msgstr "Nie mogliśmy potwierdzić, że jesteś człowiekiem. Spróbuj ponownie."
#: 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-signing/document-signing-auth-password.tsx
@@ -12320,7 +12410,7 @@ msgstr "Webhook został utworzony"
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
msgid "Webhook deleted"
msgstr "Webhook został usunięty"
msgstr "Usunięto webhook"
#: apps/remix/app/components/general/webhook-logs-sheet.tsx
msgid "Webhook Details"
@@ -12479,10 +12569,6 @@ msgstr "Zamierzasz zakończyć podpisywanie poniższego dokumentu"
msgid "You are about to complete viewing the following document"
msgstr "Zamierzasz zakończyć wyświetlanie poniższego dokumentu"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "Zamierzasz usunąć dokument <0>„{documentTitle}”</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "Zamierzasz usunąć dokument <0>„{title}”</0>"
@@ -12500,10 +12586,6 @@ msgstr "Zamierzasz usunąć następujący adres e-mail zespołu <0>{teamName}</0
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "Zamierzasz przyznać wszystkim użytkownikom organizacji dostęp do zespołu na podstawie ich roli w organizacji."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "Zamierzasz ukryć dokument <0>„{documentTitle}”</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "Zamierzasz ukryć dokument <0>„{title}”</0>"
@@ -12555,6 +12637,14 @@ msgstr "Zamierzasz usunąć następującego użytkownika z organizacji <0>{0}</0
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "Zamierzasz usunąć następującego użytkownika z zespołu <0>{teamName}</0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "Zamierzasz usunąć następującego użytkownika z organizacji <0>{organisationName}</0>:"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "Zamierzasz usunąć następującego użytkownika z zespołu <0>{teamName}</0>:"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +12967,10 @@ msgstr "Osiągnięto maksymalną liczbę zespołów w planie. Jeśli chcesz zmie
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "Osiągnięto maksymalną miesięczną liczbę dokumentów. Zaktualizuj plan."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "Osiągnąłeś limit liczby dokumentów w tym planie."
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13327,9 +13421,9 @@ msgstr "Dokument został zapisany jako szablon."
msgid "Your document has been sent successfully."
msgstr "Twój dokument został pomyślnie wysłany."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "Twój dokument został pomyślnie zduplikowany."
msgstr "Dokument został zduplikowany."
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your document has been successfully renamed."
@@ -13394,10 +13488,6 @@ msgstr "Koperta została wysłana."
msgid "Your envelope has been resent successfully."
msgstr "Koperta została ponownie wysłana."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "Koperta została zduplikowana."
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "Obecne tokeny"
@@ -13494,13 +13584,9 @@ msgstr "Zespół został zaktualizowany."
msgid "Your template has been created successfully"
msgstr "Twój szablon został pomyślnie utworzony"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
msgstr "Twój szablon został pomyślnie zduplikowany."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "Twój szablon został pomyślnie usunięty."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "Szablon został zduplikowany."
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
@@ -13515,10 +13601,6 @@ msgstr "Szablon został pomyślnie zaktualizowany"
msgid "Your template has been uploaded successfully."
msgstr "Twój szablon został pomyślnie przesłany."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "Szablon zostanie zduplikowany."
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "Twoje szablony"
+168 -86
View File
@@ -40,10 +40,6 @@ msgstr "“{documentName}” foi assinado"
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}” foi assinado por todos os signatários"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" foi excluído com sucesso"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\" em nome de \"Nome da Equipe\" convidou você para assinar \"exemplo de documento\"."
@@ -52,6 +48,10 @@ msgstr "\"{placeholderEmail}\" em nome de \"Nome da Equipe\" convidou você para
msgid "\"{title}\" has been successfully deleted"
msgstr ""
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr ""
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Nome da Equipe\" convidou você para assinar \"exemplo de documento\"."
@@ -296,14 +296,17 @@ msgid "{0}/{1}"
msgstr ""
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr ""
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr ""
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr ""
@@ -1138,6 +1141,7 @@ msgstr "Ação"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1483,7 +1487,6 @@ msgstr "Todos os domínios de e-mail foram sincronizados com sucesso"
msgid "All Folders"
msgstr "Todas as Pastas"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "Todas as assinaturas inseridas serão anuladas"
@@ -1496,7 +1499,6 @@ msgstr ""
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "Todos os destinatários assinaram. O documento está sendo processado e você receberá uma cópia por e-mail em breve."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1594,6 +1596,8 @@ msgstr "Um e-mail contendo um convite será enviado para cada membro."
msgid "An email with this address already exists."
msgstr "Um e-mail com este endereço já existe."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1685,10 +1689,6 @@ msgstr "Ocorreu um erro ao desativar a assinatura por link direto."
msgid "An error occurred while disabling the user."
msgstr "Ocorreu um erro ao desativar o usuário."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "Ocorreu um erro ao duplicar o modelo."
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "Ocorreu um erro ao ativar a assinatura por link direto."
@@ -1928,6 +1928,7 @@ msgstr "Aprovar"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "Aprovar Documento"
@@ -1991,7 +1992,6 @@ msgstr "Tem certeza de que deseja excluir esta organização?"
msgid "Are you sure you wish to delete this team?"
msgstr "Tem certeza de que deseja excluir esta equipe?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2024,6 +2024,7 @@ msgstr "Assistir"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "Assistir Documento"
@@ -2297,7 +2298,6 @@ msgstr "Ao aceitar esta solicitação, você concede a {0} as seguintes permiss
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "Ao aceitar esta solicitação, você concederá a <0>{teamName}</0> acesso a:"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "Ao excluir este documento, o seguinte ocorrerá:"
@@ -2331,16 +2331,16 @@ msgid "Can't find someone?"
msgstr ""
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2396,9 +2396,7 @@ msgstr ""
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2774,6 +2772,10 @@ msgstr "Configurar configurações gerais para o modelo."
msgid "Configure security settings for the document."
msgstr ""
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr ""
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "Configurar modelo"
@@ -2802,6 +2804,10 @@ msgstr "Configure as funções da equipe para cada grupo"
msgid "Configure the team roles for each member"
msgstr "Configure as funções da equipe para cada membro"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr ""
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2874,10 +2880,12 @@ msgid "Continue"
msgstr "Continuar"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "Continue aprovando o documento."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "Continue assistindo com o documento."
@@ -2886,10 +2894,12 @@ msgid "Continue by downloading the document."
msgstr "Continue baixando o documento."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "Continue assinando o documento."
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "Continue visualizando o documento."
@@ -2922,6 +2932,10 @@ msgstr "Controla a formatação da mensagem que será enviada ao convidar um des
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "Controla o idioma do documento, incluindo o idioma a ser usado para notificações por e-mail e o certificado final que é gerado e anexado ao documento."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr ""
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "Controla se os logs de auditoria serão incluídos no documento quando ele for baixado. Os logs de auditoria ainda podem ser baixados separadamente na página de logs."
@@ -3308,6 +3322,10 @@ msgstr "Arquivo personalizado de {0} MB"
msgid "Custom duration"
msgstr ""
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr ""
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "Grupos de Organização Personalizados"
@@ -3409,6 +3427,10 @@ msgstr ""
msgid "Default Signature Settings"
msgstr "Configurações de Assinatura Padrão"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr ""
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "Fuso Horário Padrão"
@@ -3432,13 +3454,11 @@ msgstr ""
msgid "Delegate Document Ownership"
msgstr ""
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "excluir"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3452,7 +3472,6 @@ msgstr "excluir"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3808,14 +3827,6 @@ msgstr "Registros DKIM gerados. Adicione os registros DNS para verificar seu dom
msgid "DNS Records"
msgstr "Registros DNS"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "Você deseja excluir este modelo?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "Você deseja duplicar este modelo?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr ""
@@ -3941,7 +3952,6 @@ msgid "Document Creation"
msgstr "Criação de Documento"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3972,7 +3982,7 @@ msgstr "Método de Distribuição de Documento"
msgid "Document draft"
msgstr "Rascunho de documento"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "Documento Duplicado"
@@ -3989,6 +3999,10 @@ msgstr "ID externo do documento atualizado"
msgid "Document found in your account"
msgstr "Documento encontrado em sua conta"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr ""
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4104,7 +4118,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "Autenticação de assinatura de documento atualizada"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "O processo de assinatura do documento será cancelado"
@@ -4183,7 +4196,6 @@ msgstr "Visibilidade do documento atualizada"
msgid "Document Volume"
msgstr "Volume de Documentos"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "O documento será excluído permanentemente"
@@ -4279,6 +4291,10 @@ msgstr ""
msgid "Don't have an account? <0>Sign up</0>"
msgstr "Não tem uma conta? <0>Inscreva-se</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr ""
#: 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)"
@@ -4390,10 +4406,7 @@ msgstr "Configurações do menu suspenso"
msgid "Dropdown values"
msgstr "Valores do menu suspenso"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4776,6 +4789,7 @@ msgstr ""
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "Ativado"
@@ -4901,10 +4915,6 @@ msgstr "Empresarial"
msgid "Envelope distributed"
msgstr "Envelope distribuído"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "Envelope Duplicado"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4958,7 +4968,6 @@ msgstr "Envelope atualizado"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5660,6 +5669,10 @@ msgstr "Veja como funciona:"
msgid "Hey Im Timur"
msgstr "Ei, eu sou o Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr ""
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Olá {userName},"
@@ -5672,7 +5685,6 @@ msgstr "Olá {userName}, você precisa inserir um código de verificação para
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "Olá, {userName} <0>({userEmail})</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5861,6 +5873,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"
@@ -6563,6 +6576,14 @@ msgstr "Membro"
msgid "Member Count"
msgstr "Contagem de Membros"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr ""
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr ""
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "Membro Desde"
@@ -6934,6 +6955,10 @@ msgstr "Nenhum destinatário foi detectado em seu documento."
msgid "No recipients with this role"
msgstr "Nenhum destinatário com esta função"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr ""
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7083,7 +7108,6 @@ msgstr "Nesta página, você pode criar e gerenciar tokens de API. Veja nossa <0
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "Nesta página, você pode criar novos Webhooks e gerenciar os existentes."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7649,7 +7673,6 @@ msgstr "Por favor, confirme seu e-mail"
msgid "Please confirm your email address"
msgstr "Por favor, confirme seu endereço de e-mail"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "Por favor, entre em contato com o suporte se desejar reverter esta ação."
@@ -7708,13 +7731,11 @@ msgstr "Observe que qualquer pessoa que fizer login através do seu portal será
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Observe que prosseguir removerá o destinatário do link direto e o transformará em um espaço reservado."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "Observe que esta ação é <0>irreversível</0>."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "Observe que esta ação é <0>irreversível</0>. Uma vez confirmado, este documento será excluído permanentemente."
@@ -7723,10 +7744,6 @@ msgstr "Observe que esta ação é <0>irreversível</0>. Uma vez confirmado, est
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr ""
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "Observe que esta ação é irreversível. Uma vez confirmado, seu modelo será excluído permanentemente."
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "Observe que esta ação é irreversível. Uma vez confirmado, seu token será excluído permanentemente."
@@ -7787,9 +7804,7 @@ msgstr "Por favor, tente novamente e certifique-se de inserir o endereço de e-m
msgid "Please try again or contact our support."
msgstr "Por favor, tente novamente ou entre em contato com nosso suporte."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "Por favor, digite {0} para confirmar"
@@ -8179,7 +8194,6 @@ msgstr ""
msgid "Recipients will be able to sign the document once sent"
msgstr "Os destinatários poderão assinar o documento assim que enviado"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "Os destinatários ainda manterão sua cópia do documento"
@@ -8271,16 +8285,32 @@ msgstr "Recarregar"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "Lembrou sua senha? <0>Entrar</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr ""
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "Lembrete: {0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "Lembrete: {0} convidou você para {recipientActionVerb} um documento"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr ""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr ""
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "Lembrete: Por favor {recipientActionVerb} este documento"
@@ -8289,6 +8319,12 @@ msgstr "Lembrete: Por favor {recipientActionVerb} este documento"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "Lembrete: Por favor {recipientActionVerb} seu documento"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr ""
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8315,6 +8351,11 @@ msgstr "Remover"
msgid "Remove email domain"
msgstr "Remover domínio de e-mail"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr ""
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8324,6 +8365,10 @@ msgstr "Remover grupo da organização"
msgid "Remove organisation member"
msgstr "Remover membro da organização"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr ""
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "Remover destinatário"
@@ -8337,6 +8382,10 @@ msgstr "Remover e-mail da equipe"
msgid "Remove team member"
msgstr "Remover membro da equipe"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr ""
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8988,6 +9037,10 @@ msgstr "Enviar documentos para destinatários imediatamente"
msgid "Send Envelope"
msgstr ""
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr ""
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "Enviar em Nome da Equipe"
@@ -9151,6 +9204,7 @@ msgstr "Assinar documento"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "Assinar Documento"
@@ -9349,6 +9403,10 @@ msgstr "Links de assinatura foram gerados para este documento."
msgid "Signing order is enabled."
msgstr "A ordem de assinatura está habilitada."
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr ""
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr ""
@@ -9400,8 +9458,6 @@ msgstr "Pular"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Alguns signatários não receberam um campo de assinatura. Por favor, atribua pelo menos 1 campo de assinatura a cada signatário antes de prosseguir."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9414,7 +9470,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9660,8 +9715,10 @@ msgid "Subscription Status"
msgstr "Status da Assinatura"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9986,7 +10043,7 @@ msgstr "Modelo (Legado)"
msgid "Template Created"
msgstr "Modelo Criado"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "Modelo excluído"
@@ -9994,9 +10051,9 @@ msgstr "Modelo excluído"
msgid "Template document uploaded"
msgstr "Documento de modelo enviado"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
msgstr "Modelo duplicado"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr ""
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
msgid "Template Editor"
@@ -10010,6 +10067,10 @@ msgstr "O modelo foi removido do seu perfil público."
msgid "Template has been updated."
msgstr "O modelo foi atualizado."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr ""
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "ID do Modelo (Legado)"
@@ -10179,6 +10240,10 @@ msgstr "O link direto foi copiado para sua área de transferência"
msgid "The display name for this email address"
msgstr "O nome de exibição para este endereço de e-mail"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr ""
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "O Documento foi excluído com sucesso."
@@ -10219,7 +10284,6 @@ msgstr ""
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."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "O documento será ocultado da sua conta"
@@ -10448,6 +10512,10 @@ msgstr "A equipe que você está procurando pode ter sido removida, renomeada ou
msgid "The template has been moved successfully."
msgstr "O modelo foi movido com sucesso."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr ""
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "O modelo será removido do seu perfil"
@@ -10525,6 +10593,10 @@ msgstr "O webhook foi criado com sucesso."
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "O webhook que você está procurando pode ter sido removido, renomeado ou nunca ter existido."
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr ""
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "Não há rascunhos ativos no momento. Você pode enviar um documento para começar a rascunhar."
@@ -10567,6 +10639,8 @@ msgstr "Esta ação é irreversível. Certifique-se de ter informado o usuário
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "Esta ação não é reversível. Por favor, tenha certeza."
@@ -10592,7 +10666,6 @@ msgstr "Este documento não pode ser recuperado, se você quiser contestar o mot
msgid "This document cannot be changed"
msgstr "Este documento não pode ser alterado"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "Este documento não pôde ser excluído neste momento. Por favor, tente novamente."
@@ -10601,7 +10674,6 @@ msgstr "Este documento não pôde ser excluído neste momento. Por favor, tente
msgid "This document could not be downloaded at this time. Please try again."
msgstr "Este documento não pôde ser baixado neste momento. Por favor, tente novamente."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "Este documento não pôde ser duplicado neste momento. Por favor, tente novamente."
@@ -10767,10 +10839,14 @@ msgstr "Este signatário já assinou o documento."
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Esta equipe e quaisquer dados associados, excluindo faturas de cobrança, serão excluídos permanentemente."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "Este modelo não pôde ser excluído neste momento. Por favor, tente novamente."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr ""
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "Este modelo está usando inserção de campo legada, recomendamos usar o novo método de inserção de campo para resultados mais precisos."
@@ -10874,6 +10950,10 @@ msgstr "O título não pode estar vazio"
msgid "To accept this invitation you must create an account."
msgstr "Para aceitar este convite, você deve criar uma conta."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr ""
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr ""
@@ -11813,6 +11893,7 @@ msgstr "Visualizar documento"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11979,6 +12060,11 @@ msgstr "Não conseguimos criar um cliente Stripe. Por favor, tente novamente."
msgid "We couldn't enable AI features right now. Please try again."
msgstr ""
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
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."
@@ -12241,6 +12327,10 @@ msgstr "Não conseguimos atualizar suas preferências de documento neste momento
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "Não conseguimos atualizar suas preferências de e-mail neste momento, por favor, tente novamente mais tarde"
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
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-signing/document-signing-auth-password.tsx
@@ -12474,10 +12564,6 @@ msgstr "Você está prestes a concluir a assinatura do seguinte documento"
msgid "You are about to complete viewing the following document"
msgstr "Você está prestes a concluir a visualização do seguinte documento"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "Você está prestes a excluir <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr ""
@@ -12495,10 +12581,6 @@ msgstr "Você está prestes a excluir o seguinte e-mail de equipe de <0>{teamNam
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "Você está prestes a dar acesso a esta equipe a todos os membros da organização sob sua função na organização."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "Você está prestes a ocultar <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr ""
@@ -12550,6 +12632,14 @@ msgstr "Você está prestes a remover o seguinte usuário de <0>{0}</0>."
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "Você está prestes a remover o seguinte usuário de <0>{teamName}</0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr ""
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr ""
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12872,6 +12962,10 @@ msgstr "Você atingiu o número máximo de equipes para o seu plano. Entre em co
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "Você atingiu seu limite de documentos para este mês. Por favor, atualize seu plano."
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr ""
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13322,7 +13416,7 @@ msgstr ""
msgid "Your document has been sent successfully."
msgstr "Seu documento foi enviado com sucesso."
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "Seu documento foi duplicado com sucesso."
@@ -13389,10 +13483,6 @@ msgstr "Seu envelope foi distribuído com sucesso."
msgid "Your envelope has been resent successfully."
msgstr "Seu envelope foi reenviado com sucesso."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "Seu envelope foi duplicado com sucesso."
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "Seus tokens existentes"
@@ -13489,13 +13579,9 @@ msgstr "Sua equipe foi atualizada com sucesso."
msgid "Your template has been created successfully"
msgstr "Seu modelo foi criado com sucesso"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
msgstr "Seu modelo foi duplicado com sucesso."
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "Seu modelo foi excluído com sucesso."
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr ""
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
@@ -13510,10 +13596,6 @@ msgstr ""
msgid "Your template has been uploaded successfully."
msgstr "Seu modelo foi enviado com sucesso."
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "Seu modelo será duplicado."
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr ""
+168 -86
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-04-22 14:34\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -45,10 +45,6 @@ msgstr "“{documentName}”已被签署"
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}”已由所有签署人签署"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" 已成功删除"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "“{placeholderEmail}”代表“Team Name”邀请您签署“example document”。"
@@ -57,6 +53,10 @@ msgstr "“{placeholderEmail}”代表“Team Name”邀请您签署“example d
msgid "\"{title}\" has been successfully deleted"
msgstr "“{title}”已成功删除"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "“{title}”已成功隐藏"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "“Team Name”已邀请您签署“example document”。"
@@ -301,14 +301,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, other {天}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, other {个月}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, other {周}}"
@@ -1143,6 +1146,7 @@ msgstr "操作"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1488,7 +1492,6 @@ msgstr "所有邮箱域名已成功同步"
msgid "All Folders"
msgstr "所有文件夹"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "所有已插入的签名将被作废"
@@ -1501,7 +1504,6 @@ msgstr "所有项目必须为同一类型。"
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "所有收件人都已签署。文档正在处理中,您很快会收到一份通过电子邮件发送的副本。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1599,6 +1601,8 @@ msgstr "每位成员都会收到一封包含邀请的邮件。"
msgid "An email with this address already exists."
msgstr "已存在使用该地址的邮箱。"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1694,6 @@ msgstr "禁用直接链接签署时发生错误。"
msgid "An error occurred while disabling the user."
msgstr "禁用用户时发生错误。"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "An error occurred while duplicating template."
msgstr "复制模板时发生错误。"
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
msgid "An error occurred while enabling direct link signing."
msgstr "启用直接链接签署时发生错误。"
@@ -1933,6 +1933,7 @@ msgstr "审批"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Approve Document"
msgstr "批准文档"
@@ -1996,7 +1997,6 @@ msgstr "您确定要删除此组织吗?"
msgid "Are you sure you wish to delete this team?"
msgstr "确定要删除此团队吗?"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-delete-dialog.tsx
@@ -2029,6 +2029,7 @@ msgstr "协助"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Assist Document"
msgstr "辅助文档"
@@ -2302,7 +2303,6 @@ msgstr "接受此请求,即表示您授予 {0} 以下权限:"
msgid "By accepting this request, you will be granting <0>{teamName}</0> access to:"
msgstr "接受此请求后,您将授予 <0>{teamName}</0> 以下访问权限:"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "By deleting this document, the following will occur:"
msgstr "删除此文档将会产生以下后果:"
@@ -2336,16 +2336,16 @@ msgid "Can't find someone?"
msgstr "找不到某个人?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2401,7 @@ msgstr "找不到某个人?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-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-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2777,10 @@ msgstr "配置模板的一般设置。"
msgid "Configure security settings for the document."
msgstr "为文档配置安全设置。"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure signing reminder settings for the document."
msgstr "为文档配置签署提醒设置。"
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "Configure template"
msgstr "配置模板"
@@ -2807,6 +2809,10 @@ msgstr "配置每个组的团队角色"
msgid "Configure the team roles for each member"
msgstr "配置每个成员的团队角色"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "配置在何时以及多长频率向尚未完成签署的收件人发送提醒邮件。当设置为继承时,将使用团队默认设置。"
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2885,12 @@ msgid "Continue"
msgstr "继续"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by approving the document."
msgstr "继续审批文档。"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by assisting with the document."
msgstr "继续协助完成文档。"
@@ -2891,10 +2899,12 @@ msgid "Continue by downloading the document."
msgstr "继续下载文档。"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by signing the document."
msgstr "继续签署文档。"
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Continue by viewing the document."
msgstr "继续查看文档。"
@@ -2927,6 +2937,10 @@ msgstr "控制邀请收件人签署文档时发送的消息格式。如果在配
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "控制文档所使用的语言,包括电子邮件通知的语言,以及生成并附加到文档的最终证书语言。"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "控制在何时以及多长频率向尚未完成签署的收件人发送提醒邮件。"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "控制在下载文档时,是否在文档中包含审计日志。审计日志仍可在日志页面单独下载。"
@@ -3313,6 +3327,10 @@ msgstr "自定义 {0} MB 文件"
msgid "Custom duration"
msgstr "自定义时长"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Custom interval"
msgstr "自定义间隔"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx
msgid "Custom Organisation Groups"
msgstr "自定义组织组"
@@ -3414,6 +3432,10 @@ msgstr "已将默认设置应用于此团队。继承的值来自组织。"
msgid "Default Signature Settings"
msgstr "默认签名设置"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "默认签署提醒"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "默认时区"
@@ -3437,13 +3459,11 @@ msgstr "委派文档所有权"
msgid "Delegate Document Ownership"
msgstr "委派文档所有权"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "delete"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3477,6 @@ msgstr "delete"
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-delete-dialog.tsx
@@ -3813,14 +3832,6 @@ msgstr "已生成 DKIM 记录。请添加 DNS 记录以验证您的域名。"
msgid "DNS Records"
msgstr "DNS 记录"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Do you want to delete this template?"
msgstr "要删除此模板吗?"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Do you want to duplicate this template?"
msgstr "要复制此模板吗?"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "Documenso License"
msgstr "Documenso 许可证"
@@ -3946,7 +3957,6 @@ msgid "Document Creation"
msgstr "文档创建"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/general/admin-global-settings-section.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx
@@ -3977,7 +3987,7 @@ msgstr "文档分发方式"
msgid "Document draft"
msgstr "文档草稿"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Document Duplicated"
msgstr "文档已复制"
@@ -3994,6 +4004,10 @@ msgstr "文档外部 ID 已更新"
msgid "Document found in your account"
msgstr "在您的账户中找到了该文档"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document hidden"
msgstr "文档已隐藏"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx
msgid "Document ID"
@@ -4109,7 +4123,6 @@ msgctxt "Audit log format"
msgid "Document signing auth updated"
msgstr "文档签署认证已更新"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document signing process will be cancelled"
msgstr "文档签署流程将被取消"
@@ -4188,7 +4201,6 @@ msgstr "文档可见性已更新"
msgid "Document Volume"
msgstr "文档量"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Document will be permanently deleted"
msgstr "文档将被永久删除"
@@ -4284,6 +4296,10 @@ msgstr "域名已重新注册"
msgid "Don't have an account? <0>Sign up</0>"
msgstr "还没有账号?<0>注册</0>"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Don't repeat"
msgstr "不重复"
#: 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)"
@@ -4395,10 +4411,7 @@ msgstr "下拉列表设置"
msgid "Dropdown values"
msgstr "下拉列表值"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -4781,6 +4794,7 @@ msgstr "启用团队 API 令牌,将文档所有权委派给另一位团队成
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "已启用"
@@ -4906,10 +4920,6 @@ msgstr "企业版"
msgid "Envelope distributed"
msgstr "信封已分发"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Envelope Duplicated"
msgstr "信封已复制"
#: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx
#: packages/lib/server-only/pdf/render-audit-logs.ts
msgid "Envelope ID"
@@ -4963,7 +4973,6 @@ msgstr "信封已更新"
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
@@ -5665,6 +5674,10 @@ msgstr "操作方式如下:"
msgid "Hey Im Timur"
msgstr "嗨,我是 Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "{recipientName},您好:"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "您好 {userName},"
@@ -5677,7 +5690,6 @@ msgstr "您好 {userName},您需要输入验证码才能完成文档“{docume
msgid "Hi, {userName} <0>({userEmail})</0>"
msgstr "您好,{userName} <0>{userEmail}</0>"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx
@@ -5866,6 +5878,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"
@@ -6568,6 +6581,14 @@ msgstr "成员"
msgid "Member Count"
msgstr "成员数量"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "成员已从组织中移除。"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "成员已从团队中移除。"
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "加入时间"
@@ -6939,6 +6960,10 @@ msgstr "在您的文档中未检测到任何收件人。"
msgid "No recipients with this role"
msgstr "没有具有此角色的收件人"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "No reminders"
msgstr "不发送提醒"
#: packages/ui/components/document/document-global-auth-access-select.tsx
#: packages/ui/components/document/document-global-auth-action-select.tsx
msgid "No restrictions"
@@ -7088,7 +7113,6 @@ msgstr "在此页面,您可以创建和管理 API 令牌。更多信息请参
msgid "On this page, you can create new Webhooks and manage the existing ones."
msgstr "在此页面,你可以创建新的 Webhook 并管理现有的 Webhook。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Once confirmed, the following will occur:"
@@ -7654,7 +7678,6 @@ msgstr "请确认您的邮箱"
msgid "Please confirm your email address"
msgstr "请确认您的邮箱地址"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "如需撤销此操作,请联系支持。"
@@ -7713,13 +7736,11 @@ msgstr "请注意,任何通过您的门户登录的人都会被添加为您组
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "请注意,继续操作将移除直接链接收件人,并将其转为占位符。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>."
msgstr "请注意,此操作<0>不可恢复</0>。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this document will be permanently deleted."
msgstr "请注意,此操作<0>不可恢复</0>。一旦确认,该文档将被永久删除。"
@@ -7728,10 +7749,6 @@ msgstr "请注意,此操作<0>不可恢复</0>。一旦确认,该文档将
msgid "Please note that this action is <0>irreversible</0>. Once confirmed, this template will be permanently deleted."
msgstr "请注意,此操作<0>不可撤销</0>。确认后,此模板将被永久删除。"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
msgstr "请注意,此操作不可恢复。一旦确认,你的模板将被永久删除。"
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
msgstr "请注意,此操作不可恢复。一旦确认,你的令牌将被永久删除。"
@@ -7792,9 +7809,7 @@ msgstr "请重试,并确保你输入了正确的邮箱地址。"
msgid "Please try again or contact our support."
msgstr "请重试或联系我们的支持团队。"
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "请输入 {0} 以确认"
@@ -8184,7 +8199,6 @@ msgstr "将自动添加到新文档中的收件人。"
msgid "Recipients will be able to sign the document once sent"
msgstr "发送后,收件人将能够签署此文档"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Recipients will still retain their copy of the document"
msgstr "收件人仍然会保留他们自己的文档副本"
@@ -8276,16 +8290,32 @@ msgstr "重新加载"
msgid "Remembered your password? <0>Sign In</0>"
msgstr "想起密码了?<0>登录</0>"
#: packages/email/templates/document-reminder.tsx
msgid "Reminder to {action} {documentName}"
msgstr "提醒您{action}{documentName}"
#. placeholder {0}: envelope.documentMeta.subject
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0}"
msgstr "提醒:{0}"
#. placeholder {0}: envelope.team.name
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
msgstr "提醒:{0} 邀请您 {recipientActionVerb} 一个文档"
#. placeholder {0}: _(actionVerb).toLowerCase()
#: packages/email/template-components/template-document-reminder.tsx
msgid "Reminder: Please {0} your document<0/>\"{documentName}\""
msgstr "提醒:请{0}您的文档<0/>\"{documentName}\""
#. placeholder {0}: envelope.title
#: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts
msgid "Reminder: Please {recipientActionVerb} the document \"{0}\""
msgstr "提醒:请{recipientActionVerb}文档\"{0}\""
#: packages/lib/server-only/document/resend-document.ts
msgid "Reminder: Please {recipientActionVerb} this document"
msgstr "提醒:请 {recipientActionVerb} 此文档"
@@ -8294,6 +8324,12 @@ msgstr "提醒:请 {recipientActionVerb} 此文档"
msgid "Reminder: Please {recipientActionVerb} your document"
msgstr "提醒:请 {recipientActionVerb} 您的文档"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Reminders"
msgstr "提醒"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
@@ -8320,6 +8356,11 @@ msgstr "移除"
msgid "Remove email domain"
msgstr "移除邮箱域名"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove member"
msgstr "移除成员"
#: apps/remix/app/components/tables/organisation-groups-table.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "Remove organisation group"
@@ -8329,6 +8370,10 @@ msgstr "移除组织组"
msgid "Remove organisation member"
msgstr "移除组织成员"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "移除组织成员"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "移除收件人"
@@ -8342,6 +8387,10 @@ msgstr "移除团队邮箱"
msgid "Remove team member"
msgstr "移除团队成员"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "移除团队成员"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8993,6 +9042,10 @@ msgstr "立即将文档发送给收件人"
msgid "Send Envelope"
msgstr "发送信封"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "在以下时间后发送首个提醒"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "以团队名义发送"
@@ -9156,6 +9209,7 @@ msgstr "签署文档"
#: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-reminder.tsx
msgid "Sign Document"
msgstr "签署文档"
@@ -9354,6 +9408,10 @@ msgstr "已为此文档生成签署链接。"
msgid "Signing order is enabled."
msgstr "签署顺序已启用。"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Signing Reminders"
msgstr "签署提醒"
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
msgid "Signing Status"
msgstr "签署状态"
@@ -9405,8 +9463,6 @@ msgstr "跳过"
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "部分签署人尚未被分配签名字段。请在继续前为每位签署人至少分配 1 个签名字段。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx
@@ -9419,7 +9475,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-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -9665,8 +9720,10 @@ msgid "Subscription Status"
msgstr "订阅状态"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10048,7 @@ msgstr "模板(旧版)"
msgid "Template Created"
msgstr "模板已创建"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template deleted"
msgstr "模板已删除"
@@ -9999,8 +10056,8 @@ msgstr "模板已删除"
msgid "Template document uploaded"
msgstr "模板文档已上传"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Template duplicated"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Template Duplicated"
msgstr "模板已复制"
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
@@ -10015,6 +10072,10 @@ msgstr "模板已从公开资料中移除。"
msgid "Template has been updated."
msgstr "模板已更新。"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Template hidden"
msgstr "模板已隐藏"
#: apps/remix/app/components/general/template/template-page-view-information.tsx
msgid "Template ID (Legacy)"
msgstr "模板 ID(旧版)"
@@ -10184,6 +10245,10 @@ msgstr "直接链接已复制到剪贴板"
msgid "The display name for this email address"
msgstr "此邮箱地址的显示名称"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields."
msgstr "由于信息缺失或无效,无法创建该文档。请检查模板的收件人和字段。"
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
msgid "The Document has been deleted successfully."
msgstr "文档已成功删除。"
@@ -10224,7 +10289,6 @@ msgstr "此文档的所有权已代表 {1} 委派给 {0}"
msgid "The document was created but could not be sent to recipients."
msgstr "文档已创建,但无法发送给收件人。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "The document will be hidden from your account"
msgstr "该文档将在你的账号中被隐藏"
@@ -10453,6 +10517,10 @@ msgstr "您要查找的团队可能已被删除、重命名,或从未存在。
msgid "The template has been moved successfully."
msgstr "模板已成功移动。"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "The template or one of its recipients could not be found."
msgstr "无法找到该模板或其某个收件人。"
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
msgid "The template will be removed from your profile"
msgstr "该模板将从你的资料中移除"
@@ -10530,6 +10598,10 @@ msgstr "Webhook 已创建成功。"
msgid "The webhook you are looking for may have been removed, renamed or may have never existed."
msgstr "您要查找的 Webhook 可能已被删除、重命名,或从未存在。"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Then repeat every"
msgstr "然后按以下时间间隔重复"
#: apps/remix/app/components/tables/documents-table-empty-state.tsx
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
msgstr "目前没有活动草稿。你可以上传文档开始创建草稿。"
@@ -10572,6 +10644,8 @@ msgstr "此操作不可撤销。请在继续之前确保您已告知该用户。
#: apps/remix/app/components/dialogs/account-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-user-delete-dialog.tsx
msgid "This action is not reversible. Please be certain."
msgstr "此操作不可逆。请务必确认。"
@@ -10597,7 +10671,6 @@ msgstr "此文档无法恢复。若您希望对未来文档的删除原因提出
msgid "This document cannot be changed"
msgstr "此文档无法更改"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This document could not be deleted at this time. Please try again."
msgstr "当前无法删除此文档。请重试。"
@@ -10606,7 +10679,6 @@ msgstr "当前无法删除此文档。请重试。"
msgid "This document could not be downloaded at this time. Please try again."
msgstr "当前无法下载此文档。请重试。"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This document could not be duplicated at this time. Please try again."
msgstr "当前无法复制此文档。请重试。"
@@ -10772,10 +10844,14 @@ msgstr "该签署人已签署文档。"
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "此团队及其所有关联数据(账单发票除外)将被永久删除。"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "This template could not be deleted at this time. Please try again."
msgstr "当前无法删除此模板。请重试。"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "This template could not be duplicated at this time. Please try again."
msgstr "当前无法复制此模板。请稍后重试。"
#: apps/remix/app/components/general/legacy-field-warning-popover.tsx
msgid "This template is using legacy field insertion, we recommend using the new field insertion method for more accurate results."
msgstr "此模板正在使用旧版字段插入方式,我们建议使用新的字段插入方式以获得更精确的结果。"
@@ -10879,6 +10955,10 @@ msgstr "标题不能为空"
msgid "To accept this invitation you must create an account."
msgstr "要接受此邀请,你必须创建一个账号。"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "要将成员添加到此团队,他们必须先被邀请加入组织。只有组织管理员和经理可以邀请新成员——请联系其中一位,让他们代你邀请成员。"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "要向此团队添加成员,必须先将他们添加到组织中。"
@@ -11818,6 +11898,7 @@ msgstr "查看文档"
#: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx
#: packages/email/template-components/template-document-invite.tsx
#: packages/email/template-components/template-document-rejected.tsx
#: packages/email/template-components/template-document-reminder.tsx
#: packages/email/template-components/template-recipient-expired.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
#: packages/ui/primitives/document-flow/add-subject.tsx
@@ -11984,6 +12065,11 @@ msgstr "我们无法创建 Stripe 客户。请重试。"
msgid "We couldn't enable AI features right now. Please try again."
msgstr "我们现在无法启用 AI 功能。请重试。"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "我们无法移除该成员。请稍后重试。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "我们无法更新该组。请重试。"
@@ -12246,6 +12332,10 @@ msgstr "目前无法更新你的文档偏好设置,请稍后再试"
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "我们目前无法更新您的邮件偏好设置,请稍后重试"
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
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-signing/document-signing-auth-password.tsx
@@ -12479,10 +12569,6 @@ msgstr "您即将完成以下文档的签署"
msgid "You are about to complete viewing the following document"
msgstr "您即将完成以下文档的查看"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to delete <0>\"{documentTitle}\"</0>"
msgstr "你即将删除 <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to delete <0>\"{title}\"</0>"
msgstr "您将要删除<0>\"{title}\"</0>"
@@ -12500,10 +12586,6 @@ msgstr "你即将从 <0>{teamName}</0> 中删除以下团队邮箱。"
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "您即将根据组织角色,向所有组织成员授予对此团队的访问权限。"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "你即将隐藏 <0>\"{documentTitle}\"</0>"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "您将要隐藏<0>\"{title}\"</0>"
@@ -12555,6 +12637,14 @@ msgstr "您即将从 <0>{0}</0> 中移除以下用户。"
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "你即将从 <0>{teamName}</0> 中移除以下用户。"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "您即将从组织 <0>{organisationName}</0> 中移除以下用户:"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "您即将从团队 <0>{teamName}</0> 中移除以下用户:"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +12967,10 @@ msgstr "您的团队数量已达到当前套餐上限。如需调整套餐,请
msgid "You have reached your document limit for this month. Please upgrade your plan."
msgstr "您本月的文档数量已达到上限。请升级您的套餐。"
#: apps/remix/app/components/dialogs/template-use-dialog.tsx
msgid "You have reached your document limit for this plan."
msgstr "您已达到当前方案的文档数量上限。"
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
#: packages/ui/primitives/document-dropzone.tsx
@@ -13327,7 +13421,7 @@ msgstr "您的文档已保存为模板。"
msgid "Your document has been sent successfully."
msgstr "你的文档已成功发送。"
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your document has been successfully duplicated."
msgstr "你的文档已成功复制。"
@@ -13394,10 +13488,6 @@ msgstr "您的信封已成功分发。"
msgid "Your envelope has been resent successfully."
msgstr "您的信封已成功重新发送。"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your envelope has been successfully duplicated."
msgstr "您的信封已成功复制。"
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.tokens.tsx
msgid "Your existing tokens"
msgstr "你现有的令牌"
@@ -13494,13 +13584,9 @@ msgstr "你的团队已成功更新。"
msgid "Your template has been created successfully"
msgstr "您的模板已成功创建"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template has been duplicated successfully."
msgstr "的模板已成功复制。"
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
msgid "Your template has been successfully deleted."
msgstr "你的模板已成功删除。"
#: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx
msgid "Your template has been successfully duplicated."
msgstr "的模板已成功复制。"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
msgid "Your template has been successfully renamed."
@@ -13515,10 +13601,6 @@ msgstr "您的模板已成功更新"
msgid "Your template has been uploaded successfully."
msgstr "您的模板已成功上传。"
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
msgid "Your template will be duplicated."
msgstr "你的模板将被复制。"
#: apps/remix/app/components/general/app-command-menu.tsx
msgid "Your templates"
msgstr "您的模板"
+16
View File
@@ -220,11 +220,23 @@ export const ZEmbedCreateEnvelopeAuthoringSchema = ZBaseEmbedDataSchema.extend({
externalId: z.string().optional(),
type: z.nativeEnum(EnvelopeType),
folderId: z.string().optional(),
user: z
.object({
email: z.string().email().optional(),
name: z.string().optional(),
})
.optional(),
features: z.object({}).passthrough().optional().default(DEFAULT_EMBEDDED_EDITOR_CONFIG),
});
export const ZEmbedEditEnvelopeAuthoringSchema = ZBaseEmbedDataSchema.extend({
externalId: z.string().optional(),
user: z
.object({
email: z.string().email().optional(),
name: z.string().optional(),
})
.optional(),
features: z.object({}).passthrough().optional().default(DEFAULT_EMBEDDED_EDITOR_CONFIG),
});
@@ -323,5 +335,9 @@ export type EnvelopeEditorConfig = TEnvelopeEditorSettings & {
onCreate?: (envelope: Omit<TEditorEnvelope, 'id'>) => void;
onUpdate?: (envelope: TEditorEnvelope) => void;
customBrandingLogo?: boolean;
user?: {
email?: string;
name?: string;
};
};
};
+11
View File
@@ -34,6 +34,8 @@ export const ZClaimFlagsSchema = z.object({
authenticationPortal: z.boolean().optional(),
allowLegacyEnvelopes: z.boolean().optional(),
signingReminders: z.boolean().optional(),
});
export type TClaimFlags = z.infer<typeof ZClaimFlagsSchema>;
@@ -101,6 +103,10 @@ export const SUBSCRIPTION_CLAIM_FEATURE_FLAGS: Record<
key: 'allowLegacyEnvelopes',
label: 'Allow Legacy Envelopes',
},
signingReminders: {
key: 'signingReminders',
label: 'Signing reminders',
},
};
export enum INTERNAL_CLAIM_ID {
@@ -137,6 +143,7 @@ export const internalClaims: InternalClaims = {
locked: true,
flags: {
unlimitedDocuments: true,
signingReminders: true,
},
},
[INTERNAL_CLAIM_ID.TEAM]: {
@@ -150,6 +157,7 @@ export const internalClaims: InternalClaims = {
unlimitedDocuments: true,
allowCustomBranding: true,
embedSigning: true,
signingReminders: true,
},
},
[INTERNAL_CLAIM_ID.PLATFORM]: {
@@ -168,6 +176,7 @@ export const internalClaims: InternalClaims = {
embedAuthoringWhiteLabel: true,
embedSigning: false,
embedSigningWhiteLabel: true,
signingReminders: true,
},
},
[INTERNAL_CLAIM_ID.ENTERPRISE]: {
@@ -188,6 +197,7 @@ export const internalClaims: InternalClaims = {
embedSigningWhiteLabel: true,
cfr21: true,
authenticationPortal: true,
signingReminders: true,
},
},
[INTERNAL_CLAIM_ID.EARLY_ADOPTER]: {
@@ -203,6 +213,7 @@ export const internalClaims: InternalClaims = {
hidePoweredBy: true,
embedSigning: true,
embedSigningWhiteLabel: true,
signingReminders: true,
},
},
} as const;
@@ -40,6 +40,71 @@ const getImageDimensions = (img: HTMLImageElement, fieldWidth: number, fieldHeig
};
};
/**
* The pixel ratio used when caching the signature image as an offscreen bitmap.
*
* Konva's default redraw composites the source image with low-quality scaling
* which makes signatures look blurry, especially when the source PNG is much
* larger than the field. Caching at a high pixel ratio rasterises the shape
* once into a sharp bitmap that is then reused on every redraw.
*
* Multiplied by `devicePixelRatio` to keep the cache crisp on retina displays.
*/
const SIGNATURE_IMAGE_CACHE_PIXEL_RATIO = 2;
/**
* Build a Konva.Image for a base64 signature, sized to fit within the given
* field dimensions. Works in both browser and Node.js (via skia-canvas).
*/
const createSignatureImage = (
signatureImageAsBase64: string,
fieldWidth: number,
fieldHeight: number,
): Konva.Image => {
if (typeof window !== 'undefined') {
const img = new Image();
const image = new Konva.Image({
image: img,
x: 0,
y: 0,
width: fieldWidth,
height: fieldHeight,
});
img.onload = () => {
image.setAttrs({
image: img,
...getImageDimensions(img, fieldWidth, fieldHeight),
});
// Cache the image as a high-resolution bitmap so it stays sharp on
// redraws and zoom changes instead of being re-scaled from the source PNG
// every time.
image.cache({
pixelRatio: SIGNATURE_IMAGE_CACHE_PIXEL_RATIO * (window.devicePixelRatio || 1),
});
};
img.src = signatureImageAsBase64;
return image;
}
// Node.js with skia-canvas
if (!SkiaImage) {
throw new Error('Skia image not found');
}
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
const img = new SkiaImage(signatureImageAsBase64) as unknown as HTMLImageElement;
return new Konva.Image({
image: img,
...getImageDimensions(img, fieldWidth, fieldHeight),
});
};
const createFieldSignature = (
field: FieldToRender,
options: RenderFieldElementOptions,
@@ -67,6 +132,16 @@ const createFieldSignature = (
// Handle edit mode.
if (mode === 'edit') {
textToRender = fieldTypeName;
// If the field has already been signed and we have the signature data
// available, render it. Otherwise leave the field type label as a placeholder.
if (field.inserted && signature?.typedSignature) {
textToRender = signature.typedSignature;
}
if (field.inserted && signature?.signatureImageAsBase64) {
return createSignatureImage(signature.signatureImageAsBase64, fieldWidth, fieldHeight);
}
}
// Handle sign mode.
@@ -82,44 +157,7 @@ const createFieldSignature = (
}
if (signature?.signatureImageAsBase64) {
if (typeof window !== 'undefined') {
// Create a new HTML Image element
const img = new Image();
const image = new Konva.Image({
image: img,
x: 0,
y: 0,
width: fieldWidth,
height: fieldHeight,
});
img.onload = () => {
image.setAttrs({
image: img,
...getImageDimensions(img, fieldWidth, fieldHeight),
});
};
img.src = signature.signatureImageAsBase64;
return image;
} else {
// Node.js with skia-canvas
if (!SkiaImage) {
throw new Error('Skia image not found');
}
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
const img = new SkiaImage(signature?.signatureImageAsBase64) as unknown as HTMLImageElement;
const image = new Konva.Image({
image: img,
...getImageDimensions(img, fieldWidth, fieldHeight),
});
return image;
}
return createSignatureImage(signature.signatureImageAsBase64, fieldWidth, fieldHeight);
}
}
+5 -1
View File
@@ -4,12 +4,16 @@ import type { DocumentDataVersion } from '@documenso/lib/types/document';
import { NEXT_PUBLIC_WEBAPP_URL } from '../constants/app';
/**
* `pending` is only supported when there is no recipient token (team/owner-side downloads
* via the session-authed file route). The recipient-token route does not accept `pending`.
*/
export type EnvelopeItemPdfUrlOptions =
| {
type: 'download';
envelopeItem: Pick<EnvelopeItem, 'id' | 'envelopeId'>;
token: string | undefined;
version: 'original' | 'signed';
version: 'original' | 'signed' | 'pending';
presignToken?: undefined;
}
| {
@@ -0,0 +1,10 @@
-- AlterTable
-- Add the column with a temporary default of `true` so that all existing rows
-- (representing organisations created before this feature) are backfilled to
-- `true` — preserving the historical behaviour of creating personal
-- organisations for SSO-provisioned users.
ALTER TABLE "OrganisationAuthenticationPortal" ADD COLUMN "allowPersonalOrganisations" BOOLEAN NOT NULL DEFAULT true;
-- Switch the column default to `false` so that any organisations created from
-- now on opt out of personal-organisation creation by default.
ALTER TABLE "OrganisationAuthenticationPortal" ALTER COLUMN "allowPersonalOrganisations" SET DEFAULT false;
+4 -3
View File
@@ -1100,9 +1100,10 @@ model OrganisationAuthenticationPortal {
clientSecret String @default("")
wellKnownUrl String @default("")
defaultOrganisationRole OrganisationMemberRole @default(MEMBER)
autoProvisionUsers Boolean @default(true)
allowedDomains String[] @default([])
defaultOrganisationRole OrganisationMemberRole @default(MEMBER)
autoProvisionUsers Boolean @default(true)
allowedDomains String[] @default([])
allowPersonalOrganisations Boolean @default(false)
}
model Counter {
@@ -46,7 +46,8 @@ export const createEmbeddingPresignTokenRoute = procedure
if (!organisationClaim.flags.embedAuthoring) {
throw new AppError(AppErrorCode.UNAUTHORIZED, {
message: 'You do not have permission to create embedding presign tokens',
message:
'Embedded Authoring is not included in your current plan. Please contact support.',
});
}
}
@@ -52,6 +52,7 @@ export const getOrganisationAuthenticationPortal = async ({
wellKnownUrl: true,
autoProvisionUsers: true,
allowedDomains: true,
allowPersonalOrganisations: true,
clientSecret: true,
},
},
@@ -79,6 +80,7 @@ export const getOrganisationAuthenticationPortal = async ({
wellKnownUrl: portal.wellKnownUrl,
autoProvisionUsers: portal.autoProvisionUsers,
allowedDomains: portal.allowedDomains,
allowPersonalOrganisations: portal.allowPersonalOrganisations,
clientSecretProvided: Boolean(portal.clientSecret),
};
};
@@ -14,6 +14,7 @@ export const ZGetOrganisationAuthenticationPortalResponseSchema =
wellKnownUrl: true,
autoProvisionUsers: true,
allowedDomains: true,
allowPersonalOrganisations: true,
}).extend({
/**
* Whether we have the client secret in the database.
@@ -61,6 +61,7 @@ export const updateOrganisationAuthenticationPortalRoute = authenticatedProcedur
wellKnownUrl,
autoProvisionUsers,
allowedDomains,
allowPersonalOrganisations,
} = data;
if (
@@ -104,6 +105,7 @@ export const updateOrganisationAuthenticationPortalRoute = authenticatedProcedur
wellKnownUrl,
autoProvisionUsers,
allowedDomains,
allowPersonalOrganisations,
},
});
});
@@ -14,6 +14,7 @@ export const ZUpdateOrganisationAuthenticationPortalRequestSchema = z.object({
wellKnownUrl: z.union([z.string().url(), z.literal('')]),
autoProvisionUsers: z.boolean(),
allowedDomains: z.array(z.string().regex(domainRegex)),
allowPersonalOrganisations: z.boolean(),
}),
});
@@ -18,9 +18,9 @@ export const downloadEnvelopeItemMeta: TrpcRouteMeta = {
export const ZDownloadEnvelopeItemRequestSchema = z.object({
envelopeItemId: z.string().describe('The ID of the envelope item to download.'),
version: z
.enum(['original', 'signed'])
.enum(['original', 'signed', 'pending'])
.describe(
'The version of the envelope item to download. "signed" returns the completed document with signatures, "original" returns the original uploaded document.',
'The version of the envelope item to download. "signed" returns the completed document with all signatures and the audit trail, "original" returns the original uploaded document, "pending" returns the original document with currently-inserted fields burned in (only valid while the envelope is in PENDING status; not a final executed document).',
)
.default('signed'),
});
@@ -0,0 +1,65 @@
import { FieldType } from '@prisma/client';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { getEnvelopeWhereInput } from '@documenso/lib/server-only/envelope/get-envelope-by-id';
import { prisma } from '@documenso/prisma';
import { authenticatedProcedure } from '../../trpc';
import {
ZGetEnvelopeFieldSignaturesRequestSchema,
ZGetEnvelopeFieldSignaturesResponseSchema,
} from './get-envelope-field-signatures.types';
export const getEnvelopeFieldSignaturesRoute = authenticatedProcedure
.input(ZGetEnvelopeFieldSignaturesRequestSchema)
.output(ZGetEnvelopeFieldSignaturesResponseSchema)
.query(async ({ input, ctx }) => {
const { teamId, user } = ctx;
const { envelopeId } = input;
ctx.logger.info({
input: {
envelopeId,
},
});
// Validate the user has access to the envelope.
const { envelopeWhereInput } = await getEnvelopeWhereInput({
id: {
type: 'envelopeId',
id: envelopeId,
},
type: null,
userId: user.id,
teamId,
});
const envelope = await prisma.envelope.findFirst({
where: envelopeWhereInput,
include: {
fields: {
where: {
inserted: true,
type: FieldType.SIGNATURE,
},
include: {
signature: true,
},
},
},
});
if (!envelope) {
throw new AppError(AppErrorCode.NOT_FOUND, {
message: 'Envelope not found',
});
}
const signatures = envelope.fields.map((field) => ({
fieldId: field.id,
signatureImageAsBase64: field.signature?.signatureImageAsBase64 ?? null,
typedSignature: field.signature?.typedSignature ?? null,
}));
return signatures;
});
@@ -0,0 +1,20 @@
import { z } from 'zod';
export const ZGetEnvelopeFieldSignaturesRequestSchema = z.object({
envelopeId: z.string().min(1),
});
export const ZGetEnvelopeFieldSignaturesResponseSchema = z
.object({
fieldId: z.number(),
signatureImageAsBase64: z.string().nullable(),
typedSignature: z.string().nullable(),
})
.array();
export type TGetEnvelopeFieldSignaturesRequest = z.infer<
typeof ZGetEnvelopeFieldSignaturesRequestSchema
>;
export type TGetEnvelopeFieldSignaturesResponse = z.infer<
typeof ZGetEnvelopeFieldSignaturesResponseSchema
>;
@@ -2,6 +2,7 @@ import { EnvelopeType } from '@prisma/client';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { getEnvelopeWhereInput } from '@documenso/lib/server-only/envelope/get-envelope-by-id';
import { getOrganisationTemplateWhereInput } from '@documenso/lib/server-only/template/get-organisation-template-by-id';
import { prisma } from '@documenso/prisma';
import { maybeAuthenticatedProcedure } from '../trpc';
@@ -101,7 +102,7 @@ const handleGetEnvelopeItemsByUser = async ({
userId: number;
teamId: number;
}) => {
const { envelopeWhereInput } = await getEnvelopeWhereInput({
const { envelopeWhereInput, team: callerTeam } = await getEnvelopeWhereInput({
id: {
type: 'envelopeId',
id: envelopeId,
@@ -111,7 +112,8 @@ const handleGetEnvelopeItemsByUser = async ({
teamId,
});
const envelope = await prisma.envelope.findUnique({
// Try the standard team-scoped access path first (owner / current team / team email).
let envelope = await prisma.envelope.findUnique({
where: envelopeWhereInput,
include: {
envelopeItems: {
@@ -122,6 +124,28 @@ const handleGetEnvelopeItemsByUser = async ({
},
});
// Fallback: if the envelope is an ORGANISATION template owned by a sibling team
// in the caller's organisation, allow read access to the items metadata.
// Mirrors the access logic used by `createDocumentFromTemplate` and the
// file-download endpoint's `checkEnvelopeFileAccess` so this route stays in
// sync with where actual file access is granted.
if (!envelope) {
envelope = await prisma.envelope.findFirst({
where: getOrganisationTemplateWhereInput({
id: { type: 'envelopeId', id: envelopeId },
organisationId: callerTeam.organisationId,
teamRole: callerTeam.currentTeamRole,
}),
include: {
envelopeItems: {
include: {
documentData: true,
},
},
},
});
}
if (!envelope) {
throw new AppError(AppErrorCode.NOT_FOUND, {
message: 'Envelope could not be found',
@@ -15,6 +15,7 @@ import { duplicateEnvelopeRoute } from './duplicate-envelope';
import { createEnvelopeFieldsRoute } from './envelope-fields/create-envelope-fields';
import { deleteEnvelopeFieldRoute } from './envelope-fields/delete-envelope-field';
import { getEnvelopeFieldRoute } from './envelope-fields/get-envelope-field';
import { getEnvelopeFieldSignaturesRoute } from './envelope-fields/get-envelope-field-signatures';
import { updateEnvelopeFieldsRoute } from './envelope-fields/update-envelope-fields';
import { createEnvelopeRecipientsRoute } from './envelope-recipients/create-envelope-recipients';
import { deleteEnvelopeRecipientRoute } from './envelope-recipients/delete-envelope-recipient';
@@ -68,6 +69,7 @@ export const envelopeRouter = router({
},
field: {
get: getEnvelopeFieldRoute,
getSignatures: getEnvelopeFieldSignaturesRoute,
createMany: createEnvelopeFieldsRoute,
updateMany: updateEnvelopeFieldsRoute,
delete: deleteEnvelopeFieldRoute,
@@ -51,6 +51,7 @@ export const signEnvelopeFieldRoute = procedure
signingOrder: {
gte: recipient.signingOrder ?? 0,
},
envelopeId: recipient.envelopeId,
}
: {
id: recipient.id,
@@ -1,5 +1,7 @@
import { z } from 'zod';
import { ZNameSchema } from '@documenso/lib/constants/auth';
export const ZFindUserSecurityAuditLogsSchema = z.object({
page: z.number().optional(),
perPage: z.number().optional(),
@@ -8,7 +10,7 @@ export const ZFindUserSecurityAuditLogsSchema = z.object({
export type TFindUserSecurityAuditLogsSchema = z.infer<typeof ZFindUserSecurityAuditLogsSchema>;
export const ZUpdateProfileMutationSchema = z.object({
name: z.string().min(1),
name: ZNameSchema,
signature: z.string(),
});
+7 -3
View File
@@ -1,6 +1,7 @@
import { TeamMemberRole } from '@prisma/client';
import { z } from 'zod';
import { URL_PATTERN, ZNameSchema } from '@documenso/lib/constants/auth';
import { PROTECTED_TEAM_URLS } from '@documenso/lib/constants/teams';
import { zEmail } from '@documenso/lib/utils/zod';
@@ -39,11 +40,14 @@ export const ZTeamNameSchema = z
.string()
.trim()
.min(3, { message: 'Team name must be at least 3 characters long.' })
.max(30, { message: 'Team name must not exceed 30 characters.' });
.max(30, { message: 'Team name must not exceed 30 characters.' })
.refine((value) => !URL_PATTERN.test(value), {
message: 'Team name cannot contain URLs.',
});
export const ZCreateTeamEmailVerificationMutationSchema = z.object({
teamId: z.number(),
name: z.string().trim().min(1, { message: 'Please enter a valid name.' }),
name: ZNameSchema,
email: zEmail().trim().toLowerCase().min(1, 'Please enter a valid email.'),
});
@@ -62,7 +66,7 @@ export const ZGetTeamMembersQuerySchema = z.object({
export const ZUpdateTeamEmailMutationSchema = z.object({
teamId: z.number(),
data: z.object({
name: z.string().trim().min(1),
name: ZNameSchema,
}),
});