mirror of
https://github.com/documenso/documenso.git
synced 2026-06-23 12:52:06 +10:00
Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 36c10d1a92 | |||
| 8c0e029b1b | |||
| f10d3284ba | |||
| 6a6ef8d2ad | |||
| 690491c3b1 | |||
| 6243a514af | |||
| a697832b43 | |||
| aebb5e2067 | |||
| e19b1d00d0 | |||
| c428170b5c | |||
| 84fc866cfb | |||
| 5d92aaf20a | |||
| ae497092d7 | |||
| 2f4c3893a3 | |||
| 61338af216 | |||
| 2c7a1be051 | |||
| 8bad62cc92 | |||
| 19c2f7b4a1 | |||
| 135b676cd4 |
@@ -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>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -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 }),
|
||||
});
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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" />
|
||||
|
||||
+12
-6
@@ -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
|
||||
|
||||
+17
-5
@@ -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>
|
||||
|
||||
|
||||
@@ -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
@@ -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">
|
||||
|
||||
@@ -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],
|
||||
);
|
||||
|
||||
@@ -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 : '';
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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<
|
||||
|
||||
@@ -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 };
|
||||
};
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -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.
|
||||
|
||||
Generated
+3
-3
@@ -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
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 "Standardeinstellungen, 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 "Dokumenteneigentum 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 I’m 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"
|
||||
|
||||
@@ -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 I’m Timur"
|
||||
msgstr "Hey I’m 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"
|
||||
|
||||
@@ -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 I’m 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"
|
||||
|
||||
@@ -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 quelqu’un ?"
|
||||
|
||||
#: 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 quelqu’un ?"
|
||||
#: 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 n’ont pas encore terminé la signature. Utilise le paramètre par défaut de l’équipe lorsqu’il 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 n’ont 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 d’API 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 I’m 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 l’organisation."
|
||||
|
||||
#: 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 l’organisation"
|
||||
|
||||
#: 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 l’enveloppe"
|
||||
|
||||
#: 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 l’abonnement"
|
||||
|
||||
#: 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 d’abord être invités dans l’organisation. Seuls les administrateurs et les responsables de l’organisation peuvent inviter de nouveaux membres — veuillez contacter l’un d’entre eux pour qu’il 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 d’abord les ajouter à l’organisation."
|
||||
@@ -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 n’avons pas pu activer les fonctionnalités d’IA 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 n’avons 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 n’avons 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 l’utilisateur suivant de l’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 "Vous êtes sur le point de retirer l’utilisateur 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"
|
||||
|
||||
@@ -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 I’m 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 dell’abbonamento"
|
||||
|
||||
#: 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 all’organizzazione. Solo gli amministratori e i responsabili dell’organizzazione 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 all’organizzazione."
|
||||
@@ -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"
|
||||
|
||||
@@ -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 I’m 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 "あなたのテンプレート"
|
||||
|
||||
@@ -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 I’m 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 "내 템플릿"
|
||||
|
||||
@@ -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 e‑mail 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 I’m 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 e‑mailadres 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 "Team‑e‑mail 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 team‑e‑mail 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"
|
||||
|
||||
@@ -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 e‑mail do odpowiedzi (reply‑to)"
|
||||
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 I’m 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"
|
||||
|
||||
@@ -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 I’m 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 ""
|
||||
|
||||
@@ -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 I’m 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 "您的模板"
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
| {
|
||||
|
||||
+10
@@ -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;
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
+1
@@ -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;
|
||||
});
|
||||
+20
@@ -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(),
|
||||
});
|
||||
|
||||
|
||||
@@ -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,
|
||||
}),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user