Compare commits

..

4 Commits

Author SHA1 Message Date
ephraimduncan bd3192d8f9 Merge branch 'main' into fix/dev-hmr-full-reload
# Conflicts:
#	apps/remix/vite.config.ts
2026-05-08 06:24:27 +00:00
Ephraim Duncan c915ca97ea Merge branch 'main' into fix/dev-hmr-full-reload 2026-05-07 12:40:28 +00:00
ephraimduncan 478bfe3383 Merge branch 'main' into fix/dev-hmr-full-reload
# Conflicts:
#	apps/remix/vite.config.ts
2026-04-30 15:32:43 +00:00
ephraimduncan 6f95494ad9 fix(remix): restrict hono dev-server full-reload to backend files
@hono/vite-dev-server's default handleHotUpdate triggers a full page
reload for any changed module that was loaded for SSR. With React
Router's `ssr: true`, that is essentially every app/route file, so
every edit forced a full reload and React Refresh never ran.

Wrap serverAdapter(...) and override the returned plugin's
handleHotUpdate to only invoke the full-reload path for files under
apps/remix/server/** (the actual Hono backend). Everything else falls
through to the React Router HMR / React Refresh pipeline.
2026-04-30 15:28:09 +00:00
101 changed files with 2884 additions and 3791 deletions
@@ -1,138 +0,0 @@
---
date: 2026-05-06
title: Platform Signing Page Branding
---
## What
Platform-plan organisations (and their teams) can customise the **non-embed
signing pages** (`/sign/:token`, `/d/:token`, and the sibling
complete/expired/rejected/waiting pages) with:
- Six brand colour tokens (background, foreground, primary, primary-foreground,
border, ring) plus a border-radius length.
- A free-text custom CSS block (up to 256 KB).
Settings live on `OrganisationGlobalSettings` and `TeamGlobalSettings`. Teams
inherit from the org via the existing `brandingEnabled === null` mechanism.
## Why
- Embed customers already have white-label CSS; Platform customers want the
same coverage on direct signing URLs that they iframe or link to.
- Persisting on org/team (not per envelope) means it's set-and-forget.
- Sanitising **on save** lets us inline the verbatim string at SSR — no
per-render parsing cost, no `<style>.innerHTML` injection on the client.
- Reusing the existing `embedSigningWhiteLabel` claim flag keeps "if you can
white-label an embed, you can white-label this" as one decision.
## How
### Storage (`packages/prisma/schema.prisma`)
Two new fields on each settings model. No new tables.
| Field | Org type | Team type |
| ---------------- | ------------------ | ------------------ |
| `brandingColors` | `Json?` (nullable) | `Json?` (nullable) |
| `brandingCss` | `String @default("")` | `String?` |
Colours are validated against `ZCssVarsSchema`. The team's `null` means
"inherit"; an empty colour object is collapsed to `null` server-side so a
team toggling `brandingEnabled = true` without filling in colours doesn't
silently override the org's defaults with nothing.
### Sanitiser (`packages/lib/utils/sanitize-branding-css.ts`)
PostCSS + `postcss-selector-parser`. Runs on save only.
- Drops selectors containing `::before`/`::after`/`::backdrop`/`::marker` or
the universal `*`.
- Drops integrity-breaking properties (`display`, `position`, `transform`,
layout-affecting dimensions, text-hiding properties).
- Drops declaration values containing `url(`, `expression(`, `@import`,
`javascript:`.
- Strips `!important`.
- Allows `@media` only; drops other at-rules.
- **Does not** rewrite selectors. Scoping happens at render time via native
CSS nesting under `.documenso-branded { ... }`.
- Final-pass tripwire: if a literal `</style` somehow survives serialization,
reject the entire output. PostCSS already escapes `<` to `\3c` whenever it
would form `</...`; the explicit check is belt-and-braces in case a future
serializer regresses.
- Returns `{ css, warnings[] }`. Warnings are surfaced in the UI.
Border-radius is the only token interpolated raw into a `<style>` block; it
is regex-validated (`CSS_LENGTH_REGEX`) at both the Zod schema and the
runtime `toNativeCssVars` call. Belt-and-braces against schema drift.
### Render (`apps/remix/app/components/general/recipient-branding.tsx`)
Each recipient loader calls `loadRecipientBrandingByTeamId` and threads the
payload through to `<RecipientBranding>`, which emits a single
nonce-attributed `<style>`:
```
.documenso-branded {
--background: ...; ...
<user css>
}
```
Native CSS nesting expands user rules under the wrapper. The body class is
applied unconditionally to recipient routes in `root.tsx` via `useMatches()`
so portaled Radix content (dialogs, popovers, tooltips, dropdowns) inherits
the scope.
CSP for recipient routes already supports `<style nonce>`; no policy
changes needed.
### Plan gate
`organisationClaim.flags.embedSigningWhiteLabel || !IS_BILLING_ENABLED()`.
Self-hosted instances always allow. The outer paywall for logo/URL/details
stays on `allowCustomBranding` (Team plan and up); only the new
colour/CSS section is Platform-only.
### UI (`apps/remix/app/components/forms/branding-preferences-form.tsx`)
Extends the existing branding form. Six `<ColorPicker showHex>` (rewritten
to use the native `<input type="color">` instead of `react-colorful`, which
was removed) in a 2-col grid, plus a free-text radius input and an
`<Accordion>` revealing a mono `<Textarea>`. Defaults come from
`packages/lib/constants/theme.ts` (light-mode hex mirror of `theme.css`).
Warnings from the sanitiser are surfaced in an `<Alert variant="warning">`
after save, and the `brandingCss` textarea is re-synced from the persisted
value so the user sees exactly what was stored. Other fields are
deliberately NOT reset on settings refetch — that would clobber in-flight
edits.
### TRPC
`update-organisation-settings` and `update-team-settings` accept the new
fields, run them through `sanitizeBrandingCss` + `normalizeBrandingColors`,
and return any sanitiser warnings to the client. The team route treats
`null` as "inherit"; an empty post-sanitisation string is collapsed to
`null` (team) so an empty override doesn't mask the org's CSS.
## Known accepted limitations
- The sanitiser does not prevent hostile-but-syntactically-valid CSS
(`color: transparent`, low-contrast values, etc.). The customer is
branding **their own** signing pages — we focus on integrity (no
overlay/hide/exfiltrate), not aesthetic policing.
- User rules targeting `body`/`html`/`:root` no-op once nested under the
wrapper class. Documented for users.
- CSS nesting baseline is Chrome 120+ / Firefox 117+ / Safari 16.5+.
Acceptable for the Platform-tier audience.
- No automated `theme.css``theme.ts` sync check; fat comment in
`theme.ts` reminds devs to update both.
- Per-section team inherit is coarse — `brandingEnabled = null` inherits
everything from the org. Per-field inherit toggles are deferred.
## Out of scope
Live preview, embed-route sanitiser unification, email/PDF certificate
branding, custom font upload, the full ~30 colour tokens in the picker UI,
wiring `hidePoweredBy` through to the actual footer.
+1 -9
View File
@@ -160,16 +160,8 @@ NEXT_PRIVATE_REDIS_PREFIX="documenso"
NEXT_PUBLIC_POSTHOG_KEY=""
# OPTIONAL: Leave blank to disable billing.
NEXT_PUBLIC_FEATURE_BILLING_ENABLED=
# OPTIONAL: Set to "true" to disable all signup methods (email, Google, Microsoft, OIDC, including the organisation OIDC portal).
# OPTIONAL: Leave blank to allow users to signup through /signup page.
NEXT_PUBLIC_DISABLE_SIGNUP=
# OPTIONAL: Set to "true" to disable email/password signup only.
NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP=
# OPTIONAL: Set to "true" to block new-account creation through Google. Existing linked users can still sign in.
NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP=
# OPTIONAL: Set to "true" to block new-account creation through Microsoft. Existing linked users can still sign in.
NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP=
# OPTIONAL: Set to "true" to block new-account creation through OIDC (including the organisation portal).
NEXT_PUBLIC_DISABLE_OIDC_SIGNUP=
# OPTIONAL: Comma-separated list of email domains allowed to sign up (e.g., example.com,acme.org).
NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS=
# OPTIONAL: Set to true to use internal webapp url in browserless requests.
@@ -224,41 +224,28 @@ For detailed certificate setup, see [Signing Certificate](/docs/self-hosting/con
## Feature Flags
| Variable | Description | Default |
| -------------------------------------------- | ----------------------------------------------------------------------------------- | ------- |
| `NEXT_PUBLIC_DISABLE_SIGNUP` | Master switch. Disable all signup methods application-wide | `false` |
| `NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP` | Disable email/password signup only. SSO signup is unaffected | `false` |
| `NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP` | Block new accounts via Google. Existing Google-linked users can still sign in | `false` |
| `NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP` | Block new accounts via Microsoft. Existing linked users can still sign in | `false` |
| `NEXT_PUBLIC_DISABLE_OIDC_SIGNUP` | Block new accounts via OIDC, including the organisation portal | `false` |
| `NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS` | Comma-separated list of email domains allowed to sign up (e.g., `example.com,acme.org`) | |
| Variable | Description | Default |
| ------------------------------------- | ----------------------------------------------------------------------------------- | ------- |
| `NEXT_PUBLIC_DISABLE_SIGNUP` | Disable public user registration entirely | `false` |
| `NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS` | Comma-separated list of email domains allowed to sign up (e.g., `example.com,acme.org`) | |
| `NEXT_PUBLIC_POSTHOG_KEY` | PostHog API key for analytics and feature flags | |
| `NEXT_PUBLIC_FEATURE_BILLING_ENABLED` | Enable billing features | `false` |
### Signup Restrictions
You can control who is allowed to create accounts on your instance with the following environment variables:
You can control who is allowed to create accounts on your instance using two environment variables:
- **`NEXT_PUBLIC_DISABLE_SIGNUP`** (master switch): Set to `true` to block all new signups across every method (email/password, Google, Microsoft, OIDC). When set, this also blocks new-account creation through the organisation OIDC authentication portal.
- **`NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP`**: Set to `true` to disable email/password signup only. SSO signup is still allowed.
- **`NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP`**, **`NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP`**, **`NEXT_PUBLIC_DISABLE_OIDC_SIGNUP`**: Set to `true` to block brand-new account creation through the matching SSO provider. Existing users with the provider already linked can still sign in, and existing users can still link the provider to their account. `NEXT_PUBLIC_DISABLE_OIDC_SIGNUP` also blocks new-account creation through the organisation authentication portal.
- **`NEXT_PUBLIC_DISABLE_SIGNUP`**: Set to `true` to block all new signups. Existing users can still sign in. This applies to both email/password and OAuth signups.
- **`NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS`**: Restrict signups to specific email domains. When set, only users whose email address matches one of the listed domains can create an account. Leave empty to allow all domains.
Sign-in for existing users is never affected — only the creation of brand-new accounts.
Both restrictions apply to email/password registration and OAuth (Google, Microsoft, OIDC). If a user attempts to sign up via OAuth with a disallowed domain, they are redirected to the sign-in page with an error.
Both the master switch and the domain allowlist apply to email/password registration and OAuth (Google, Microsoft, OIDC). If a user attempts to sign up via OAuth with a disallowed domain, they are redirected to the sign-in page with an error.
When both the master switch and the domain allowlist are set, the master switch takes precedence. Signups are blocked regardless of the domain list.
When both variables are set, `NEXT_PUBLIC_DISABLE_SIGNUP` takes precedence. Signups are blocked regardless of the domain list.
```bash
# Allow signups only from specific domains
NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS="example.com,acme.org"
# Allow OIDC signup only; block email/password, Google, Microsoft
NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP="true"
NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP="true"
NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP="true"
# Or disable signups entirely
NEXT_PUBLIC_DISABLE_SIGNUP="true"
```
@@ -384,10 +371,6 @@ NEXT_PRIVATE_SIGNING_PASSPHRASE="your-certificate-password"
# Signup restrictions (optional)
# NEXT_PUBLIC_DISABLE_SIGNUP="true"
# NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP="true"
# NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP="true"
# NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP="true"
# NEXT_PUBLIC_DISABLE_OIDC_SIGNUP="true"
# NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS="example.com,acme.org"
```
@@ -155,13 +155,7 @@ PORT=3000
NEXT_PRIVATE_SIGNING_PASSPHRASE=your-certificate-password
# Signup restrictions (optional)
# Master switch — disables every signup method
NEXT_PUBLIC_DISABLE_SIGNUP=false
# Per-method switches (optional). Each disables brand-new account creation through that method.
# NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP=true
# NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP=true
# NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP=true
# NEXT_PUBLIC_DISABLE_OIDC_SIGNUP=true
# NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS=example.com,acme.org
```
@@ -258,10 +252,7 @@ Navigate to the signup page and create your account. Verify your email address
<Callout type="info">
All accounts created through signup are regular user accounts. Admin access must be granted
directly in the database. Once your accounts are set up, consider disabling public signups by
setting `NEXT_PUBLIC_DISABLE_SIGNUP=true`. For finer control, use the per-method switches
`NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP`, `NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP`,
`NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP`, `NEXT_PUBLIC_DISABLE_OIDC_SIGNUP`, or restrict
signups to specific email domains with
setting `NEXT_PUBLIC_DISABLE_SIGNUP=true`, or restrict signups to specific email domains with
`NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS`.
</Callout>
@@ -100,11 +100,7 @@ See [Email Configuration](/docs/self-hosting/configuration/email) for other tran
| `NEXT_PRIVATE_SIGNING_PASSPHRASE` | Passphrase for the signing certificate | - |
| `NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS` | Base64-encoded `.p12` certificate (alternative to file path) | - |
| `NEXT_PUBLIC_UPLOAD_TRANSPORT` | Document storage: `database` or `s3` | `database` |
| `NEXT_PUBLIC_DISABLE_SIGNUP` | Master switch — disable all signup methods | `false` |
| `NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP` | Disable email/password signup only | `false` |
| `NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP` | Block new accounts via Google OAuth | `false` |
| `NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP` | Block new accounts via Microsoft OAuth | `false` |
| `NEXT_PUBLIC_DISABLE_OIDC_SIGNUP` | Block new accounts via OIDC (incl. organisation portal) | `false` |
| `NEXT_PUBLIC_DISABLE_SIGNUP` | Disable public signups | `false` |
| `NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS` | Comma-separated list of allowed signup email domains | |
For the complete list, see [Environment Variables](/docs/self-hosting/configuration/environment).
@@ -153,11 +153,7 @@ NEXT_PRIVATE_SMTP_FROM_ADDRESS=noreply@yourdomain.com
| Variable | Description | Default |
| --------------------------------- | ---------------------------------- | ------- |
| `PORT` | Application port | `3000` |
| `NEXT_PUBLIC_DISABLE_SIGNUP` | Master switch — disable all signup methods | `false` |
| `NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP` | Disable email/password signup only | `false` |
| `NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP` | Block new accounts via Google OAuth | `false` |
| `NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP`| Block new accounts via Microsoft OAuth | `false` |
| `NEXT_PUBLIC_DISABLE_OIDC_SIGNUP` | Block new accounts via OIDC (incl. organisation portal)| `false` |
| `NEXT_PUBLIC_DISABLE_SIGNUP` | Disable public signups | `false` |
| `NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS` | Comma-separated list of allowed signup email domains | |
| `NEXT_PRIVATE_SIGNING_PASSPHRASE` | Passphrase for signing certificate | - |
| `DOCUMENSO_DISABLE_TELEMETRY` | Disable anonymous telemetry | `false` |
@@ -134,13 +134,6 @@ Leave empty to allow any domain authenticated by your identity provider.
team.
</Callout>
### Allow Personal Organisations
Controls whether users signing in via SSO for the first time also receive their own personal organisation in addition to joining your organisation.
- **Enabled**: New SSO users get a personal organisation where they can create and manage their own documents independently.
- **Disabled**: New SSO users only join your organisation and do not receive a personal organisation.
## User Provisioning
When a user signs in through your SSO portal for the first time:
@@ -1,11 +1,7 @@
import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation';
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { DEFAULT_BRAND_COLORS, DEFAULT_BRAND_RADIUS } from '@documenso/lib/constants/theme';
import { ZCssVarsSchema } from '@documenso/lib/types/css-vars';
import { cn } from '@documenso/ui/lib/utils';
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@documenso/ui/primitives/accordion';
import { Button } from '@documenso/ui/primitives/button';
import { ColorPicker } from '@documenso/ui/primitives/color-picker';
import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel } from '@documenso/ui/primitives/form/form';
import { Input } from '@documenso/ui/primitives/input';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@documenso/ui/primitives/select';
@@ -19,7 +15,6 @@ import { useForm } from 'react-hook-form';
import { z } from 'zod';
import { useOptionalCurrentTeam } from '~/providers/team';
import { useCspNonce } from '~/utils/nonce';
const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5MB
const ACCEPTED_FILE_TYPES = ['image/jpeg', 'image/png', 'image/webp'];
@@ -33,20 +28,17 @@ const ZBrandingPreferencesFormSchema = z.object({
.nullish(),
brandingUrl: z.string().url().optional().or(z.literal('')),
brandingCompanyDetails: z.string().max(500).optional(),
brandingColors: ZCssVarsSchema.default({}),
brandingCss: z.string().max(10_000).default(''),
});
export type TBrandingPreferencesFormSchema = z.infer<typeof ZBrandingPreferencesFormSchema>;
type SettingsSubset = Pick<
TeamGlobalSettings,
'brandingEnabled' | 'brandingLogo' | 'brandingUrl' | 'brandingCompanyDetails' | 'brandingColors' | 'brandingCss'
'brandingEnabled' | 'brandingLogo' | 'brandingUrl' | 'brandingCompanyDetails'
>;
export type BrandingPreferencesFormProps = {
canInherit?: boolean;
hasAdvancedBranding: boolean;
settings: SettingsSubset;
onFormSubmit: (data: TBrandingPreferencesFormSchema) => Promise<void>;
context: 'Team' | 'Organisation';
@@ -54,13 +46,11 @@ export type BrandingPreferencesFormProps = {
export function BrandingPreferencesForm({
canInherit = false,
hasAdvancedBranding,
settings,
onFormSubmit,
context,
}: BrandingPreferencesFormProps) {
const { t } = useLingui();
const nonce = useCspNonce();
const team = useOptionalCurrentTeam();
const organisation = useCurrentOrganisation();
@@ -68,17 +58,12 @@ export function BrandingPreferencesForm({
const [previewUrl, setPreviewUrl] = useState<string>('');
const [hasLoadedPreview, setHasLoadedPreview] = useState(false);
const parsedColors = ZCssVarsSchema.safeParse(settings.brandingColors);
const initialColors = parsedColors.success ? parsedColors.data : {};
const form = useForm<TBrandingPreferencesFormSchema>({
values: {
defaultValues: {
brandingEnabled: settings.brandingEnabled ?? null,
brandingUrl: settings.brandingUrl ?? '',
brandingLogo: undefined,
brandingCompanyDetails: settings.brandingCompanyDetails ?? '',
brandingColors: initialColors,
brandingCss: settings.brandingCss ?? '',
},
resolver: zodResolver(ZBrandingPreferencesFormSchema),
});
@@ -319,225 +304,6 @@ export function BrandingPreferencesForm({
/>
</div>
{hasAdvancedBranding && (
<div className="relative flex w-full flex-col gap-y-6">
{!isBrandingEnabled && <div className="absolute inset-0 z-[9998] bg-background/60" />}
<div>
<FormLabel>
<Trans>Brand Colours</Trans>
</FormLabel>
<FormDescription className="mt-1 mb-4">
<Trans>Customise the colours used on your signing pages.</Trans>
</FormDescription>
<div className="grid grid-cols-2 gap-4">
<FormField
control={form.control}
name="brandingColors.background"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Background</Trans>
</FormLabel>
<FormDescription>
<Trans>Base background colour.</Trans>
</FormDescription>
<FormControl>
<ColorPicker
nonce={nonce}
value={field.value ?? ''}
defaultValue={DEFAULT_BRAND_COLORS.background}
onChange={(color) => field.onChange(color)}
/>
</FormControl>
</FormItem>
)}
/>
<FormField
control={form.control}
name="brandingColors.foreground"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Foreground</Trans>
</FormLabel>
<FormDescription>
<Trans>Base text colour.</Trans>
</FormDescription>
<FormControl>
<ColorPicker
nonce={nonce}
value={field.value ?? ''}
defaultValue={DEFAULT_BRAND_COLORS.foreground}
onChange={(color) => field.onChange(color)}
/>
</FormControl>
</FormItem>
)}
/>
<FormField
control={form.control}
name="brandingColors.primary"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Primary</Trans>
</FormLabel>
<FormDescription>
<Trans>Primary action colour.</Trans>
</FormDescription>
<FormControl>
<ColorPicker
nonce={nonce}
value={field.value ?? ''}
defaultValue={DEFAULT_BRAND_COLORS.primary}
onChange={(color) => field.onChange(color)}
/>
</FormControl>
</FormItem>
)}
/>
<FormField
control={form.control}
name="brandingColors.primaryForeground"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Primary Foreground</Trans>
</FormLabel>
<FormDescription>
<Trans>Text colour on primary buttons.</Trans>
</FormDescription>
<FormControl>
<ColorPicker
nonce={nonce}
value={field.value ?? ''}
defaultValue={DEFAULT_BRAND_COLORS.primaryForeground}
onChange={(color) => field.onChange(color)}
/>
</FormControl>
</FormItem>
)}
/>
<FormField
control={form.control}
name="brandingColors.border"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Border</Trans>
</FormLabel>
<FormDescription>
<Trans>Default border colour.</Trans>
</FormDescription>
<FormControl>
<ColorPicker
nonce={nonce}
value={field.value ?? ''}
defaultValue={DEFAULT_BRAND_COLORS.border}
onChange={(color) => field.onChange(color)}
/>
</FormControl>
</FormItem>
)}
/>
<FormField
control={form.control}
name="brandingColors.ring"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Ring</Trans>
</FormLabel>
<FormDescription>
<Trans>Focus ring colour.</Trans>
</FormDescription>
<FormControl>
<ColorPicker
nonce={nonce}
value={field.value ?? ''}
defaultValue={DEFAULT_BRAND_COLORS.ring}
onChange={(color) => field.onChange(color)}
/>
</FormControl>
</FormItem>
)}
/>
</div>
<div className="mt-4">
<FormField
control={form.control}
name="brandingColors.radius"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Border Radius</Trans>
</FormLabel>
<FormControl>
<Input
type="text"
placeholder={DEFAULT_BRAND_RADIUS}
value={field.value ?? ''}
onChange={(e) => field.onChange(e.target.value)}
/>
</FormControl>
<FormDescription>
<Trans>Border radius size in REM units (e.g. 0.5rem).</Trans>
</FormDescription>
</FormItem>
)}
/>
</div>
</div>
<Accordion type="single" collapsible>
<AccordionItem value="custom-css" className="border-none">
<AccordionTrigger className="rounded border px-3 py-2 text-left text-foreground hover:bg-muted/40 hover:no-underline">
<Trans>Advanced Custom CSS</Trans>
</AccordionTrigger>
<AccordionContent className="-mx-1 px-1 pt-4 text-muted-foreground text-sm leading-relaxed">
<FormField
control={form.control}
name="brandingCss"
render={({ field }) => (
<FormItem className="flex-1">
<FormControl>
<Textarea
placeholder={t`/* Write CSS targeting your signing pages. Selectors are scoped automatically. */
.my-button {
background: red;
}`}
className="min-h-[200px] font-mono text-xs"
{...field}
value={field.value ?? ''}
/>
</FormControl>
<FormDescription>
<Trans>
Custom CSS is sanitised on save. Layout-breaking properties, remote URLs, and
pseudo-elements are stripped automatically. Any rules dropped during sanitisation will be
shown after you save.
</Trans>
</FormDescription>
</FormItem>
)}
/>
</AccordionContent>
</AccordionItem>
</Accordion>
</div>
)}
<div className="flex flex-row justify-end space-x-4">
<Button type="submit" loading={form.formState.isSubmitting}>
<Trans>Update</Trans>
+76 -88
View File
@@ -58,20 +58,18 @@ export type TSignUpFormSchema = z.infer<typeof ZSignUpFormSchema>;
export type SignUpFormProps = {
className?: string;
initialEmail?: string;
isEmailPasswordSignupEnabled?: boolean;
isGoogleSignupEnabled?: boolean;
isMicrosoftSignupEnabled?: boolean;
isOidcSignupEnabled?: boolean;
isGoogleSSOEnabled?: boolean;
isMicrosoftSSOEnabled?: boolean;
isOIDCSSOEnabled?: boolean;
returnTo?: string;
};
export const SignUpForm = ({
className,
initialEmail,
isEmailPasswordSignupEnabled = true,
isGoogleSignupEnabled,
isMicrosoftSignupEnabled,
isOidcSignupEnabled,
isGoogleSSOEnabled,
isMicrosoftSSOEnabled,
isOIDCSSOEnabled,
returnTo,
}: SignUpFormProps) => {
const { _ } = useLingui();
@@ -88,7 +86,7 @@ export const SignUpForm = ({
const [captchaToken, setCaptchaToken] = useState<string | null>(null);
const hasSocialAuthEnabled = isGoogleSignupEnabled || isMicrosoftSignupEnabled || isOidcSignupEnabled;
const hasSocialAuthEnabled = isGoogleSSOEnabled || isMicrosoftSSOEnabled || isOIDCSSOEnabled;
const form = useForm<TSignUpFormSchema>({
values: {
@@ -147,7 +145,7 @@ export const SignUpForm = ({
const onSignUpWithGoogleClick = async () => {
try {
await authClient.google.signIn();
} catch {
} catch (err) {
toast({
title: _(msg`An unknown error occurred`),
description: _(msg`We encountered an unknown error while attempting to sign you Up. Please try again later.`),
@@ -159,7 +157,7 @@ export const SignUpForm = ({
const onSignUpWithMicrosoftClick = async () => {
try {
await authClient.microsoft.signIn();
} catch {
} catch (err) {
toast({
title: _(msg`An unknown error occurred`),
description: _(msg`We encountered an unknown error while attempting to sign you Up. Please try again later.`),
@@ -171,7 +169,7 @@ export const SignUpForm = ({
const onSignUpWithOIDCClick = async () => {
try {
await authClient.oidc.signIn();
} catch {
} catch (err) {
toast({
title: _(msg`An unknown error occurred`),
description: _(msg`We encountered an unknown error while attempting to sign you Up. Please try again later.`),
@@ -237,80 +235,72 @@ export const SignUpForm = ({
<Form {...form}>
<form className="flex w-full flex-1 flex-col gap-y-4" onSubmit={form.handleSubmit(onFormSubmit)}>
<fieldset className="flex w-full flex-col gap-y-4" disabled={isSubmitting}>
{isEmailPasswordSignupEnabled && (
<>
<FormField
control={form.control}
name="name"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Full Name</Trans>
</FormLabel>
<FormControl>
<Input type="text" {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="name"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Full Name</Trans>
</FormLabel>
<FormControl>
<Input type="text" {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="email"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Email Address</Trans>
</FormLabel>
<FormControl>
<Input type="email" {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="email"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Email Address</Trans>
</FormLabel>
<FormControl>
<Input type="email" {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="password"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Password</Trans>
</FormLabel>
<FormField
control={form.control}
name="password"
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans>Password</Trans>
</FormLabel>
<FormControl>
<PasswordInput {...field} />
</FormControl>
<FormControl>
<PasswordInput {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="signature"
render={({ field: { onChange, value } }) => (
<FormItem>
<FormLabel>
<Trans>Sign Here</Trans>
</FormLabel>
<FormControl>
<SignaturePadDialog
disabled={isSubmitting}
value={value}
onChange={(v) => onChange(v ?? '')}
/>
</FormControl>
<FormField
control={form.control}
name="signature"
render={({ field: { onChange, value } }) => (
<FormItem>
<FormLabel>
<Trans>Sign Here</Trans>
</FormLabel>
<FormControl>
<SignaturePadDialog disabled={isSubmitting} value={value} onChange={(v) => onChange(v ?? '')} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
</>
)}
<FormMessage />
</FormItem>
)}
/>
{turnstileSiteKey && (
<Turnstile
@@ -335,7 +325,7 @@ export const SignUpForm = ({
</div>
)}
{isGoogleSignupEnabled && (
{isGoogleSSOEnabled && (
<Button
type="button"
size="lg"
@@ -349,7 +339,7 @@ export const SignUpForm = ({
</Button>
)}
{isMicrosoftSignupEnabled && (
{isMicrosoftSSOEnabled && (
<Button
type="button"
size="lg"
@@ -363,7 +353,7 @@ export const SignUpForm = ({
</Button>
)}
{isOidcSignupEnabled && (
{isOIDCSSOEnabled && (
<Button
type="button"
size="lg"
@@ -387,11 +377,9 @@ export const SignUpForm = ({
</p>
</fieldset>
{isEmailPasswordSignupEnabled && (
<Button loading={form.formState.isSubmitting} type="submit" size="lg" className="mt-6 w-full">
<Trans>Create account</Trans>
</Button>
)}
<Button loading={form.formState.isSubmitting} type="submit" size="lg" className="mt-6 w-full">
<Trans>Create account</Trans>
</Button>
</form>
</Form>
<p className="mt-6 text-muted-foreground text-xs">
@@ -4,7 +4,6 @@ import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/org
import { useSession } from '@documenso/lib/client-only/providers/session';
import { APP_DOCUMENT_UPLOAD_SIZE_LIMIT, IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
import { DEFAULT_DOCUMENT_TIME_ZONE, TIME_ZONES } from '@documenso/lib/constants/time-zones';
import { ALLOWED_UPLOAD_MIME_TYPES } from '@documenso/lib/constants/upload';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { megabytesToBytes } from '@documenso/lib/universal/unit-convertions';
import { formatDocumentsPath, formatTemplatesPath } from '@documenso/lib/utils/teams';
@@ -116,12 +115,6 @@ export const EnvelopeDropZoneWrapper = ({ children, type, className }: EnvelopeD
() => t`You have reached your document limit for this month. Please upgrade your plan.`,
)
.with('ENVELOPE_ITEM_LIMIT_EXCEEDED', () => t`You have reached the limit of the number of files per envelope.`)
.with('CONVERSION_SERVICE_UNAVAILABLE', () => t`File conversion is not available. Please upload a PDF file.`)
.with('CONVERSION_FAILED', () => t`Failed to convert file. Please try uploading a PDF instead.`)
.with(
'UNSUPPORTED_FILE_TYPE',
() => t`This file type is not supported. Please upload a PDF, Word document, or image.`,
)
.otherwise(() => t`An error occurred during upload.`);
toast({
@@ -165,7 +158,9 @@ export const EnvelopeDropZoneWrapper = ({ children, type, className }: EnvelopeD
});
};
const { getRootProps, getInputProps, isDragActive } = useDropzone({
accept: ALLOWED_UPLOAD_MIME_TYPES,
accept: {
'application/pdf': ['.pdf'],
},
multiple: true,
maxSize: megabytesToBytes(APP_DOCUMENT_UPLOAD_SIZE_LIMIT),
maxFiles: maximumEnvelopeItemCount,
@@ -188,7 +183,7 @@ export const EnvelopeDropZoneWrapper = ({ children, type, className }: EnvelopeD
</h2>
<p className="mt-4 text-md text-muted-foreground">
<Trans>Drag and drop your document here</Trans>
<Trans>Drag and drop your PDF file here</Trans>
</p>
{isUploadDisabled && IS_BILLING_ENABLED() && (
@@ -114,18 +114,6 @@ export const EnvelopeUploadButton = ({ className, type, folderId }: EnvelopeUplo
const errorMessage = match(error.code)
.with('INVALID_DOCUMENT_FILE', () => t`You cannot upload encrypted PDFs.`)
.with(
'UNSUPPORTED_FILE_TYPE',
() => t`This file type is not supported. Please upload a PDF, DOCX, JPEG, or PNG file.`,
)
.with(
'CONVERSION_SERVICE_UNAVAILABLE',
() => t`File conversion is temporarily unavailable. Please upload a PDF file instead.`,
)
.with(
'CONVERSION_FAILED',
() => t`Failed to convert the file to PDF. Please try again or upload a PDF file instead.`,
)
.with(
AppErrorCode.LIMIT_EXCEEDED,
() => t`You have reached your document limit for this month. Please upgrade your plan.`,
@@ -1,90 +0,0 @@
import type { TCssVarsSchema } from '@documenso/lib/types/css-vars';
import { useEffect } from 'react';
import { toNativeCssVarsString } from '~/utils/css-vars';
export type RecipientBrandingPayload = {
allowCustomBranding: boolean;
colors?: TCssVarsSchema | null;
css?: string | null;
};
export type RecipientBrandingProps = {
branding: RecipientBrandingPayload | null | undefined;
cspNonce: string | undefined;
};
/**
* Renders a `<style nonce>` block for a recipient route, scoped to the
* `.documenso-branded` wrapper rendered in `_recipient+/_layout.tsx`.
*
* Both the CSS variables (from `branding.colors`) and the user's custom CSS
* (from `branding.css`) are emitted inside a single nested rule so the user
* doesn't need to scope their own selectors — native CSS nesting handles it:
*
* .documenso-branded {
* --background: ...;
* .my-class { color: red; }
* }
*
* Equivalent to `.documenso-branded .my-class { color: red; }` after expansion.
*
* The user's CSS is sanitised at write time (`sanitizeBrandingCss`) and stored
* in the DB as-is — no per-render parsing.
*
* Why both SSR `<style>` and a `useEffect` injection?
*
* The rendered `<style>` covers the initial server render so the first paint
* already has the branding applied — without it, the page would flash the
* default theme before hydration.
*
* The `useEffect` covers in-app client-side navigations. When the user
* navigates between recipient routes via the router, the server render
* doesn't run again, so React reconciles the existing DOM. If the loader
* data changes (e.g. a different recipient with different branding), the
* SSR'd `<style>` from the previous page may persist or be reused, leading
* to stale or inconsistent branding. Appending a fresh `<style>` to
* `document.head` and removing it on cleanup guarantees the active branding
* matches the current route on both initial load and subsequent navigations.
*/
export const RecipientBranding = ({ branding, cspNonce }: RecipientBrandingProps) => {
const varsString = toNativeCssVarsString(branding?.colors ?? {});
const userCss = branding?.css ?? '';
const hasVars = varsString.trim().length > 0;
const hasUserCss = userCss.trim().length > 0;
const innerBody = `${hasVars ? `${varsString}\n` : ''}${hasUserCss ? userCss : ''}`.trim();
const css = `.documenso-branded { ${innerBody} }`;
useEffect(() => {
if (!branding?.allowCustomBranding) {
return;
}
if (!hasVars && !hasUserCss) {
return;
}
const style = document.createElement('style');
style.setAttribute('nonce', cspNonce ?? '');
style.textContent = css;
document.head.appendChild(style);
return () => {
document.head.removeChild(style);
};
}, [branding, cspNonce, css, hasUserCss, hasVars]);
if (!branding?.allowCustomBranding) {
return null;
}
if (!hasVars && !hasUserCss) {
return null;
}
return <style nonce={cspNonce}>{css}</style>;
};
+4 -5
View File
@@ -3,6 +3,7 @@ import { dynamicActivate } from '@documenso/lib/utils/i18n';
import { i18n } from '@lingui/core';
import { detect, fromHtmlTag } from '@lingui/detect-locale';
import { I18nProvider } from '@lingui/react';
import posthog from 'posthog-js';
import { StrictMode, startTransition, useEffect } from 'react';
import { hydrateRoot } from 'react-dom/client';
import { HydratedRouter } from 'react-router/dom';
@@ -14,11 +15,9 @@ function PosthogInit() {
useEffect(() => {
if (postHogConfig) {
void import('posthog-js').then(({ default: posthog }) => {
posthog.init(postHogConfig.key, {
api_host: postHogConfig.host,
capture_exceptions: true,
});
posthog.init(postHogConfig.key, {
api_host: postHogConfig.host,
capture_exceptions: true,
});
}
}, []);
+1 -9
View File
@@ -17,7 +17,6 @@ import {
Scripts,
ScrollRestoration,
useLoaderData,
useMatches,
} from 'react-router';
import { PreventFlashOnWrongTheme, ThemeProvider, useTheme } from 'remix-themes';
@@ -111,13 +110,6 @@ export function LayoutContent({ children }: { children: React.ReactNode }) {
const [theme] = useTheme();
// Recipient routes (signing pages) put `documenso-branded` on <body> so the
// <style> block from `RecipientBranding` applies to BOTH the main tree and
// any portaled content (Radix dialogs/popovers/dropdowns mount outside the
// route tree, attached directly to document.body).
const matches = useMatches();
const isRecipientRoute = matches.some((m) => m.id?.startsWith('routes/_recipient+'));
return (
<html translate="no" lang={lang} data-theme={theme} className={theme ?? ''}>
<head>
@@ -145,7 +137,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 nonce={nonce(cspNonce)}>0</script>
</head>
<body className={isRecipientRoute ? 'documenso-branded' : undefined}>
<body>
{/* Global license banner currently disabled. Need to wait until after a few releases. */}
{/* {licenseStatus === '?' && (
<div className="bg-destructive text-destructive-foreground">
@@ -27,7 +27,7 @@ import { useRevalidator } from 'react-router';
import type { z } from 'zod';
import { SettingsHeader } from '~/components/general/settings-header';
import { useCspNonce } from '~/utils/nonce';
import type { Route } from './+types/site-settings';
const ZBannerFormSchema = ZSiteSettingsBannerSchema;
@@ -45,8 +45,6 @@ export async function loader() {
export default function AdminBannerPage({ loaderData }: Route.ComponentProps) {
const { banner } = loaderData;
const nonce = useCspNonce();
const { toast } = useToast();
const { _ } = useLingui();
const { revalidate } = useRevalidator();
@@ -144,7 +142,7 @@ export default function AdminBannerPage({ loaderData }: Route.ComponentProps) {
<FormControl>
<div>
<ColorPicker {...field} nonce={nonce} />
<ColorPicker {...field} />
</div>
</FormControl>
@@ -164,7 +162,7 @@ export default function AdminBannerPage({ loaderData }: Route.ComponentProps) {
<FormControl>
<div>
<ColorPicker {...field} nonce={nonce} />
<ColorPicker {...field} />
</div>
</FormControl>
@@ -3,15 +3,13 @@ import { useSession } from '@documenso/lib/client-only/providers/session';
import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
import { putFile } from '@documenso/lib/universal/upload/put-file';
import { canExecuteOrganisationAction, isPersonalLayout } from '@documenso/lib/utils/organisations';
import type { SanitizeBrandingCssWarning } from '@documenso/lib/utils/sanitize-branding-css';
import { trpc } from '@documenso/trpc/react';
import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert';
import { Button } from '@documenso/ui/primitives/button';
import { useToast } from '@documenso/ui/primitives/use-toast';
import { msg, plural } from '@lingui/core/macro';
import { msg } from '@lingui/core/macro';
import { Trans, useLingui } from '@lingui/react/macro';
import { Loader } from 'lucide-react';
import { useState } from 'react';
import { Link } from 'react-router';
import {
@@ -37,13 +35,7 @@ export default function OrganisationSettingsBrandingPage() {
const isPersonalLayoutMode = isPersonalLayout(organisations);
const [cssWarnings, setCssWarnings] = useState<SanitizeBrandingCssWarning[]>([]);
const {
data: organisationWithSettings,
isLoading: isLoadingOrganisation,
refetch: refetchOrganisation,
} = trpc.organisation.get.useQuery({
const { data: organisationWithSettings, isLoading: isLoadingOrganisation } = trpc.organisation.get.useQuery({
organisationReference: organisation.url,
});
@@ -51,7 +43,7 @@ export default function OrganisationSettingsBrandingPage() {
const onBrandingPreferencesFormSubmit = async (data: TBrandingPreferencesFormSchema) => {
try {
const { brandingEnabled, brandingLogo, brandingUrl, brandingCompanyDetails, brandingColors, brandingCss } = data;
const { brandingEnabled, brandingLogo, brandingUrl, brandingCompanyDetails } = data;
let uploadedBrandingLogo: string | undefined;
@@ -64,40 +56,20 @@ export default function OrganisationSettingsBrandingPage() {
uploadedBrandingLogo = '';
}
const result = await updateOrganisationSettings({
await updateOrganisationSettings({
organisationId: organisation.id,
data: {
brandingEnabled: brandingEnabled ?? undefined,
brandingLogo: uploadedBrandingLogo,
brandingUrl,
brandingCompanyDetails,
brandingColors,
brandingCss,
},
});
// Refetch so the form re-syncs with the sanitised CSS that was
// actually persisted (sanitiser may have dropped rules).
await refetchOrganisation();
const warnings = result?.cssWarnings ?? [];
setCssWarnings(warnings);
if (warnings.length > 0) {
toast({
title: t`Branding preferences updated with warnings`,
description: plural(warnings.length, {
one: '# CSS rule was dropped during sanitisation.',
other: '# CSS rules were dropped during sanitisation.',
}),
duration: 8000,
});
} else {
toast({
title: t`Branding preferences updated`,
description: t`Your branding preferences have been updated`,
});
}
toast({
title: t`Branding preferences updated`,
description: t`Your branding preferences have been updated`,
});
} catch (err) {
toast({
title: t`Something went wrong`,
@@ -131,36 +103,9 @@ export default function OrganisationSettingsBrandingPage() {
<section>
<BrandingPreferencesForm
context="Organisation"
hasAdvancedBranding={
organisationWithSettings.organisationClaim.flags.embedSigningWhiteLabel === true || !IS_BILLING_ENABLED()
}
settings={organisationWithSettings.organisationGlobalSettings}
onFormSubmit={onBrandingPreferencesFormSubmit}
/>
{cssWarnings.length > 0 && (
<Alert variant="warning" className="mt-6">
<AlertTitle>
<Trans>CSS rules were dropped during sanitisation</Trans>
</AlertTitle>
<AlertDescription>
<ul className="list-disc pl-5">
{cssWarnings.map((warning, index) => (
<li key={index}>
{warning.detail}
{warning.line !== undefined && (
<span className="text-muted-foreground">
{' '}
<Trans>(line {warning.line})</Trans>
</span>
)}
</li>
))}
</ul>
</AlertDescription>
</Alert>
)}
</section>
) : (
<Alert className="mt-8 flex flex-col justify-between p-6 sm:flex-row sm:items-center" variant="neutral">
@@ -1,14 +1,9 @@
import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation';
import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
import { putFile } from '@documenso/lib/universal/upload/put-file';
import type { SanitizeBrandingCssWarning } from '@documenso/lib/utils/sanitize-branding-css';
import { trpc } from '@documenso/trpc/react';
import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert';
import { useToast } from '@documenso/ui/primitives/use-toast';
import { plural } from '@lingui/core/macro';
import { Trans, useLingui } from '@lingui/react/macro';
import { msg } from '@lingui/core/macro';
import { useLingui } from '@lingui/react/macro';
import { Loader } from 'lucide-react';
import { useState } from 'react';
import {
BrandingPreferencesForm,
@@ -16,32 +11,27 @@ import {
} from '~/components/forms/branding-preferences-form';
import { SettingsHeader } from '~/components/general/settings-header';
import { useCurrentTeam } from '~/providers/team';
import { appMetaTags } from '~/utils/meta';
export function meta() {
return appMetaTags(msg`Branding Preferences`);
}
export default function TeamsSettingsPage() {
const team = useCurrentTeam();
const organisation = useCurrentOrganisation();
const { t } = useLingui();
const { toast } = useToast();
const [cssWarnings, setCssWarnings] = useState<SanitizeBrandingCssWarning[]>([]);
const {
data: teamWithSettings,
isLoading: isLoadingTeam,
refetch: refetchTeam,
} = trpc.team.get.useQuery({
const { data: teamWithSettings, isLoading: isLoadingTeam } = trpc.team.get.useQuery({
teamReference: team.id,
});
const { mutateAsync: updateTeamSettings } = trpc.team.settings.update.useMutation();
const canCustomBranding =
organisation.organisationClaim.flags.embedSigningWhiteLabel === true || !IS_BILLING_ENABLED();
const onBrandingPreferencesFormSubmit = async (data: TBrandingPreferencesFormSchema) => {
try {
const { brandingEnabled, brandingLogo, brandingUrl, brandingCompanyDetails, brandingColors, brandingCss } = data;
const { brandingEnabled, brandingLogo, brandingUrl, brandingCompanyDetails } = data;
let uploadedBrandingLogo: string | undefined;
@@ -54,40 +44,20 @@ export default function TeamsSettingsPage() {
uploadedBrandingLogo = '';
}
const result = await updateTeamSettings({
await updateTeamSettings({
teamId: team.id,
data: {
brandingEnabled,
brandingLogo: uploadedBrandingLogo,
brandingUrl: brandingUrl || null,
brandingCompanyDetails: brandingCompanyDetails || null,
brandingColors,
brandingCss,
},
});
// Refetch so the form re-syncs with the sanitised CSS that was
// actually persisted (sanitiser may have dropped rules).
await refetchTeam();
const warnings = result?.cssWarnings ?? [];
setCssWarnings(warnings);
if (warnings.length > 0) {
toast({
title: t`Branding preferences updated with warnings`,
description: plural(warnings.length, {
one: '# CSS rule was dropped during sanitisation.',
other: '# CSS rules were dropped during sanitisation.',
}),
duration: 8000,
});
} else {
toast({
title: t`Branding preferences updated`,
description: t`Your branding preferences have been updated`,
});
}
toast({
title: t`Branding preferences updated`,
description: t`Your branding preferences have been updated`,
});
} catch (err) {
toast({
title: t`Something went wrong`,
@@ -115,35 +85,10 @@ export default function TeamsSettingsPage() {
<section>
<BrandingPreferencesForm
canInherit={true}
hasAdvancedBranding={canCustomBranding}
context="Team"
settings={teamWithSettings.teamSettings}
onFormSubmit={onBrandingPreferencesFormSubmit}
/>
{cssWarnings.length > 0 && (
<Alert variant="warning" className="mt-6">
<AlertTitle>
<Trans>CSS rules were dropped during sanitisation</Trans>
</AlertTitle>
<AlertDescription>
<ul className="list-disc pl-5">
{cssWarnings.map((warning, index) => (
<li key={index}>
{warning.detail}
{warning.line !== undefined && (
<span className="text-muted-foreground">
{' '}
<Trans>(line {warning.line})</Trans>
</span>
)}
</li>
))}
</ul>
</AlertDescription>
</Alert>
)}
</section>
</div>
);
@@ -1,21 +1,14 @@
import { useOptionalSession } from '@documenso/lib/client-only/providers/session';
import { cn } from '@documenso/ui/lib/utils';
import { Button } from '@documenso/ui/primitives/button';
import { i18n } from '@lingui/core';
import { msg } from '@lingui/core/macro';
import { Trans } from '@lingui/react/macro';
import { ChevronLeft } from 'lucide-react';
import { isRouteErrorResponse, Link, Outlet } from 'react-router';
import { Header as AuthenticatedHeader } from '~/components/general/app-header';
import { GenericErrorLayout } from '~/components/general/generic-error-layout';
import type { Route } from './+types/_layout';
export function meta() {
return [
{ title: i18n._(msg`Sign Document - Documenso`) },
{ name: 'robots', content: 'noindex, nofollow, noarchive, nosnippet, noimageindex' },
];
}
import type { Route } from './+types/_layout';
/**
* A layout to handle scenarios where the user is a recipient of a given resource
@@ -2,7 +2,6 @@ import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session
import { EnvelopeRenderProvider } from '@documenso/lib/client-only/providers/envelope-render-provider';
import { useOptionalSession } from '@documenso/lib/client-only/providers/session';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { loadRecipientBrandingByTeamId } from '@documenso/lib/server-only/branding/load-recipient-branding';
import { getEnvelopeForDirectTemplateSigning } from '@documenso/lib/server-only/envelope/get-envelope-for-direct-template-signing';
import { getTemplateByDirectLinkToken } from '@documenso/lib/server-only/template/get-template-by-direct-link-token';
import { DocumentAccessAuth } from '@documenso/lib/types/document-auth';
@@ -21,8 +20,6 @@ import { DocumentSigningAuthProvider } from '~/components/general/document-signi
import { DocumentSigningPageViewV2 } from '~/components/general/document-signing/document-signing-page-view-v2';
import { DocumentSigningProvider } from '~/components/general/document-signing/document-signing-provider';
import { EnvelopeSigningProvider } from '~/components/general/document-signing/envelope-signing-provider';
import { RecipientBranding } from '~/components/general/recipient-branding';
import { useCspNonce } from '~/utils/nonce';
import { superLoaderJson, useSuperLoaderData } from '~/utils/super-json-loader';
import type { Route } from './+types/_index';
@@ -128,7 +125,6 @@ export async function loader(loaderArgs: Route.LoaderArgs) {
},
select: {
internalVersion: true,
teamId: true,
},
});
@@ -136,17 +132,12 @@ export async function loader(loaderArgs: Route.LoaderArgs) {
throw new Response('Not Found', { status: 404 });
}
const branding = await loadRecipientBrandingByTeamId({
teamId: directEnvelope.teamId,
});
if (directEnvelope.internalVersion === 2) {
const payloadV2 = await handleV2Loader(loaderArgs);
return superLoaderJson({
version: 2,
payload: payloadV2,
branding,
} as const);
}
@@ -155,20 +146,17 @@ export async function loader(loaderArgs: Route.LoaderArgs) {
return superLoaderJson({
version: 1,
payload: payloadV1,
branding,
} as const);
}
export default function DirectTemplatePage() {
const data = useSuperLoaderData<typeof loader>();
const cspNonce = useCspNonce();
return (
<>
<RecipientBranding branding={data.branding} cspNonce={cspNonce} />
{data.version === 2 ? <DirectSigningPageV2 data={data.payload} /> : <DirectSigningPageV1 data={data.payload} />}
</>
);
if (data.version === 2) {
return <DirectSigningPageV2 data={data.payload} />;
}
return <DirectSigningPageV1 data={data.payload} />;
}
const DirectSigningPageV1 = ({ data }: { data: Awaited<ReturnType<typeof handleV1Loader>> }) => {
@@ -3,7 +3,6 @@ import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session
import { EnvelopeRenderProvider } from '@documenso/lib/client-only/providers/envelope-render-provider';
import { useOptionalSession } from '@documenso/lib/client-only/providers/session';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { loadRecipientBrandingByTeamId } from '@documenso/lib/server-only/branding/load-recipient-branding';
import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
import { viewedDocument } from '@documenso/lib/server-only/document/viewed-document';
import { getEnvelopeForRecipientSigning } from '@documenso/lib/server-only/envelope/get-envelope-for-recipient-signing';
@@ -36,8 +35,6 @@ import { DocumentSigningPageViewV1 } from '~/components/general/document-signing
import { DocumentSigningPageViewV2 } from '~/components/general/document-signing/document-signing-page-view-v2';
import { DocumentSigningProvider } from '~/components/general/document-signing/document-signing-provider';
import { EnvelopeSigningProvider } from '~/components/general/document-signing/envelope-signing-provider';
import { RecipientBranding } from '~/components/general/recipient-branding';
import { useCspNonce } from '~/utils/nonce';
import { superLoaderJson, useSuperLoaderData } from '~/utils/super-json-loader';
import type { Route } from './+types/_index';
@@ -275,7 +272,6 @@ export async function loader(loaderArgs: Route.LoaderArgs) {
envelope: {
select: {
internalVersion: true,
teamId: true,
},
},
},
@@ -285,17 +281,12 @@ export async function loader(loaderArgs: Route.LoaderArgs) {
throw new Response('Not Found', { status: 404 });
}
const branding = await loadRecipientBrandingByTeamId({
teamId: foundRecipient.envelope.teamId,
});
if (foundRecipient.envelope.internalVersion === 2) {
const payloadV2 = await handleV2Loader(loaderArgs);
return superLoaderJson({
version: 2,
payload: payloadV2,
branding,
} as const);
}
@@ -304,20 +295,17 @@ export async function loader(loaderArgs: Route.LoaderArgs) {
return superLoaderJson({
version: 1,
payload: payloadV1,
branding,
} as const);
}
export default function SigningPage() {
const data = useSuperLoaderData<typeof loader>();
const cspNonce = useCspNonce();
return (
<>
<RecipientBranding branding={data.branding} cspNonce={cspNonce} />
{data.version === 2 ? <SigningPageV2 data={data.payload} /> : <SigningPageV1 data={data.payload} />}
</>
);
if (data.version === 2) {
return <SigningPageV2 data={data.payload} />;
}
return <SigningPageV1 data={data.payload} />;
}
const SigningPageV1 = ({ data }: { data: Awaited<ReturnType<typeof handleV1Loader>> }) => {
@@ -1,8 +1,6 @@
import signingCelebration from '@documenso/assets/images/signing-celebration.png';
import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session';
import { useOptionalSession } from '@documenso/lib/client-only/providers/session';
import { isSignupEnabledForProvider } from '@documenso/lib/constants/auth';
import { loadRecipientBrandingByTeamId } from '@documenso/lib/server-only/branding/load-recipient-branding';
import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
import { isRecipientAuthorized } from '@documenso/lib/server-only/document/is-recipient-authorized';
import { getFieldsForToken } from '@documenso/lib/server-only/field/get-fields-for-token';
@@ -10,6 +8,7 @@ import { getRecipientByToken } from '@documenso/lib/server-only/recipient/get-re
import { getRecipientSignatures } from '@documenso/lib/server-only/recipient/get-recipient-signatures';
import { getUserByEmail } from '@documenso/lib/server-only/user/get-user-by-email';
import { isDocumentCompleted } from '@documenso/lib/utils/document';
import { env } from '@documenso/lib/utils/env';
import { trpc } from '@documenso/trpc/react';
import { DocumentShareButton } from '@documenso/ui/components/document/document-share-button';
import { SigningCard3D } from '@documenso/ui/components/signing-card';
@@ -26,8 +25,6 @@ import { match } from 'ts-pattern';
import { EnvelopeDownloadDialog } from '~/components/dialogs/envelope-download-dialog';
import { ClaimAccount } from '~/components/general/claim-account';
import { DocumentSigningAuthPageView } from '~/components/general/document-signing/document-signing-auth-page';
import { RecipientBranding } from '~/components/general/recipient-branding';
import { useCspNonce } from '~/utils/nonce';
import type { Route } from './+types/complete';
@@ -49,8 +46,6 @@ export async function loader({ params, request }: Route.LoaderArgs) {
throw new Response('Not Found', { status: 404 });
}
const branding = await loadRecipientBrandingByTeamId({ teamId: document.teamId });
const [fields, recipient] = await Promise.all([
getFieldsForToken({ token }),
getRecipientByToken({ token }).catch(() => null),
@@ -71,7 +66,6 @@ export async function loader({ params, request }: Route.LoaderArgs) {
return {
isDocumentAccessValid: false,
recipientEmail: recipient.email,
branding,
} as const;
}
@@ -83,7 +77,7 @@ export async function loader({ params, request }: Route.LoaderArgs) {
const recipientName =
recipient.name || fields.find((field) => field.type === FieldType.NAME)?.customText || recipient.email;
const canSignUp = !isExistingUser && isSignupEnabledForProvider('email');
const canSignUp = !isExistingUser && env('NEXT_PUBLIC_DISABLE_SIGNUP') !== 'true';
const canRedirectToFolder = user && document.userId === user.id && document.folderId && document.team?.url;
@@ -98,7 +92,6 @@ export async function loader({ params, request }: Route.LoaderArgs) {
document,
recipient,
returnToHomePath,
branding,
};
}
@@ -107,7 +100,6 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
const { sessionData } = useOptionalSession();
const user = sessionData?.user;
const cspNonce = useCspNonce();
const {
isDocumentAccessValid,
@@ -118,7 +110,6 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
recipient,
recipientEmail,
returnToHomePath,
branding,
} = loaderData;
// Poll signing status every few seconds
@@ -140,163 +131,154 @@ export default function CompletedSigningPage({ loaderData }: Route.ComponentProp
const signingStatus = signingStatusData?.status ?? 'PENDING';
if (!isDocumentAccessValid) {
return (
<>
<RecipientBranding branding={branding} cspNonce={cspNonce} />
<DocumentSigningAuthPageView email={recipientEmail} />
</>
);
return <DocumentSigningAuthPageView email={recipientEmail} />;
}
return (
<>
<RecipientBranding branding={branding} cspNonce={cspNonce} />
<div
className={cn('-mx-4 flex flex-col items-center overflow-hidden px-4 pt-16 md:-mx-8 md:px-8 lg:pt-20 xl:pt-28', {
'pt-0 lg:pt-0 xl:pt-0': canSignUp,
})}
>
<div
className={cn(
'-mx-4 flex flex-col items-center overflow-hidden px-4 pt-16 md:-mx-8 md:px-8 lg:pt-20 xl:pt-28',
{ 'pt-0 lg:pt-0 xl:pt-0': canSignUp },
)}
className={cn('relative mt-6 flex w-full flex-col items-center justify-center', {
'mt-0 flex-col divide-y overflow-hidden pt-6 md:pt-16 lg:flex-row lg:divide-x lg:divide-y-0 lg:pt-20 xl:pt-24':
canSignUp,
})}
>
<div
className={cn('relative mt-6 flex w-full flex-col items-center justify-center', {
'mt-0 flex-col divide-y overflow-hidden pt-6 md:pt-16 lg:flex-row lg:divide-x lg:divide-y-0 lg:pt-20 xl:pt-24':
canSignUp,
className={cn('flex flex-col items-center', {
'mb-8 p-4 md:mb-0 md:p-12': canSignUp,
})}
>
<div
className={cn('flex flex-col items-center', {
'mb-8 p-4 md:mb-0 md:p-12': canSignUp,
})}
>
<Badge variant="neutral" size="default" className="mb-6 rounded-xl border bg-transparent">
<span className="block max-w-[10rem] truncate font-medium hover:underline md:max-w-[20rem]">
{document.title}
</span>
</Badge>
<Badge variant="neutral" size="default" className="mb-6 rounded-xl border bg-transparent">
<span className="block max-w-[10rem] truncate font-medium hover:underline md:max-w-[20rem]">
{document.title}
</span>
</Badge>
{/* Card with recipient */}
<SigningCard3D
name={recipientName}
signature={signatures.at(0)}
signingCelebrationImage={signingCelebration}
{/* Card with recipient */}
<SigningCard3D
name={recipientName}
signature={signatures.at(0)}
signingCelebrationImage={signingCelebration}
/>
<h2 className="mt-6 max-w-[35ch] text-center font-semibold text-2xl leading-normal md:text-3xl lg:text-4xl">
{recipient.role === RecipientRole.SIGNER && <Trans>Document Signed</Trans>}
{recipient.role === RecipientRole.VIEWER && <Trans>Document Viewed</Trans>}
{recipient.role === RecipientRole.APPROVER && <Trans>Document Approved</Trans>}
</h2>
{match({ status: signingStatus, deletedAt: document.deletedAt })
.with({ status: 'COMPLETED' }, () => (
<div className="mt-4 flex items-center text-center text-documenso-700">
<CheckCircle2 className="mr-2 h-5 w-5" />
<span className="text-sm">
<Trans>Everyone has signed</Trans>
</span>
</div>
))
.with({ status: 'PROCESSING' }, () => (
<div className="mt-4 flex items-center text-center text-orange-600">
<Loader2 className="mr-2 h-5 w-5 animate-spin" />
<span className="text-sm">
<Trans>Processing document</Trans>
</span>
</div>
))
.with({ deletedAt: null }, () => (
<div className="mt-4 flex items-center text-center text-blue-600">
<Clock8 className="mr-2 h-5 w-5" />
<span className="text-sm">
<Trans>Waiting for others to sign</Trans>
</span>
</div>
))
.otherwise(() => (
<div className="flex items-center text-center text-red-600">
<Clock8 className="mr-2 h-5 w-5" />
<span className="text-sm">
<Trans>Document no longer available to sign</Trans>
</span>
</div>
))}
{match({ status: signingStatus, deletedAt: document.deletedAt })
.with({ status: 'COMPLETED' }, () => (
<p className="mt-2.5 max-w-[60ch] text-center font-medium text-muted-foreground/60 text-sm md:text-base">
<Trans>Everyone has signed! You will receive an email copy of the signed document.</Trans>
</p>
))
.with({ status: 'PROCESSING' }, () => (
<p className="mt-2.5 max-w-[60ch] text-center font-medium text-muted-foreground/60 text-sm md:text-base">
<Trans>
All recipients have signed. The document is being processed and you will receive an email copy
shortly.
</Trans>
</p>
))
.with({ deletedAt: null }, () => (
<p className="mt-2.5 max-w-[60ch] text-center font-medium text-muted-foreground/60 text-sm md:text-base">
<Trans>You will receive an email copy of the signed document once everyone has signed.</Trans>
</p>
))
.otherwise(() => (
<p className="mt-2.5 max-w-[60ch] text-center font-medium text-muted-foreground/60 text-sm md:text-base">
<Trans>
This document has been cancelled by the owner and is no longer available for others to sign.
</Trans>
</p>
))}
<div className="mt-8 flex w-full max-w-xs flex-col items-stretch gap-4 md:w-auto md:max-w-none md:flex-row md:items-center">
<DocumentShareButton
documentId={document.id}
token={recipient.token}
className="w-full max-w-none md:flex-1"
/>
<h2 className="mt-6 max-w-[35ch] text-center font-semibold text-2xl leading-normal md:text-3xl lg:text-4xl">
{recipient.role === RecipientRole.SIGNER && <Trans>Document Signed</Trans>}
{recipient.role === RecipientRole.VIEWER && <Trans>Document Viewed</Trans>}
{recipient.role === RecipientRole.APPROVER && <Trans>Document Approved</Trans>}
</h2>
{match({ status: signingStatus, deletedAt: document.deletedAt })
.with({ status: 'COMPLETED' }, () => (
<div className="mt-4 flex items-center text-center text-documenso-700">
<CheckCircle2 className="mr-2 h-5 w-5" />
<span className="text-sm">
<Trans>Everyone has signed</Trans>
</span>
</div>
))
.with({ status: 'PROCESSING' }, () => (
<div className="mt-4 flex items-center text-center text-orange-600">
<Loader2 className="mr-2 h-5 w-5 animate-spin" />
<span className="text-sm">
<Trans>Processing document</Trans>
</span>
</div>
))
.with({ deletedAt: null }, () => (
<div className="mt-4 flex items-center text-center text-blue-600">
<Clock8 className="mr-2 h-5 w-5" />
<span className="text-sm">
<Trans>Waiting for others to sign</Trans>
</span>
</div>
))
.otherwise(() => (
<div className="flex items-center text-center text-red-600">
<Clock8 className="mr-2 h-5 w-5" />
<span className="text-sm">
<Trans>Document no longer available to sign</Trans>
</span>
</div>
))}
{match({ status: signingStatus, deletedAt: document.deletedAt })
.with({ status: 'COMPLETED' }, () => (
<p className="mt-2.5 max-w-[60ch] text-center font-medium text-muted-foreground/60 text-sm md:text-base">
<Trans>Everyone has signed! You will receive an email copy of the signed document.</Trans>
</p>
))
.with({ status: 'PROCESSING' }, () => (
<p className="mt-2.5 max-w-[60ch] text-center font-medium text-muted-foreground/60 text-sm md:text-base">
<Trans>
All recipients have signed. The document is being processed and you will receive an email copy
shortly.
</Trans>
</p>
))
.with({ deletedAt: null }, () => (
<p className="mt-2.5 max-w-[60ch] text-center font-medium text-muted-foreground/60 text-sm md:text-base">
<Trans>You will receive an email copy of the signed document once everyone has signed.</Trans>
</p>
))
.otherwise(() => (
<p className="mt-2.5 max-w-[60ch] text-center font-medium text-muted-foreground/60 text-sm md:text-base">
<Trans>
This document has been cancelled by the owner and is no longer available for others to sign.
</Trans>
</p>
))}
<div className="mt-8 flex w-full max-w-xs flex-col items-stretch gap-4 md:w-auto md:max-w-none md:flex-row md:items-center">
<DocumentShareButton
documentId={document.id}
token={recipient.token}
className="w-full max-w-none md:flex-1"
{isDocumentCompleted(document) && (
<EnvelopeDownloadDialog
envelopeId={document.envelopeId}
envelopeStatus={document.status}
envelopeItems={document.envelopeItems}
token={recipient?.token}
trigger={
<Button type="button" variant="outline" className="flex-1 md:flex-initial">
<DownloadIcon className="mr-2 h-5 w-5" />
<Trans>Download</Trans>
</Button>
}
/>
)}
{isDocumentCompleted(document) && (
<EnvelopeDownloadDialog
envelopeId={document.envelopeId}
envelopeStatus={document.status}
envelopeItems={document.envelopeItems}
token={recipient?.token}
trigger={
<Button type="button" variant="outline" className="flex-1 md:flex-initial">
<DownloadIcon className="mr-2 h-5 w-5" />
<Trans>Download</Trans>
</Button>
}
/>
)}
{user && (
<Button asChild>
<Link to={returnToHomePath}>
<Trans>Go Back Home</Trans>
</Link>
</Button>
)}
</div>
</div>
<div className="flex flex-col items-center">
{canSignUp && (
<div className="flex max-w-xl flex-col items-center justify-center p-4 md:p-12">
<h2 className="mt-8 text-center font-semibold text-xl md:mt-0">
<Trans>Need to sign documents?</Trans>
</h2>
<p className="mt-4 max-w-[55ch] text-center text-muted-foreground/60 leading-normal">
<Trans>Create your account and start using state-of-the-art document signing.</Trans>
</p>
<ClaimAccount defaultName={recipientName} defaultEmail={recipient.email} />
</div>
{user && (
<Button asChild>
<Link to={returnToHomePath}>
<Trans>Go Back Home</Trans>
</Link>
</Button>
)}
</div>
</div>
<div className="flex flex-col items-center">
{canSignUp && (
<div className="flex max-w-xl flex-col items-center justify-center p-4 md:p-12">
<h2 className="mt-8 text-center font-semibold text-xl md:mt-0">
<Trans>Need to sign documents?</Trans>
</h2>
<p className="mt-4 max-w-[55ch] text-center text-muted-foreground/60 leading-normal">
<Trans>Create your account and start using state-of-the-art document signing.</Trans>
</p>
<ClaimAccount defaultName={recipientName} defaultEmail={recipient.email} />
</div>
)}
</div>
</div>
</>
</div>
);
}
@@ -1,6 +1,5 @@
import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session';
import { useOptionalSession } from '@documenso/lib/client-only/providers/session';
import { loadRecipientBrandingByTeamId } from '@documenso/lib/server-only/branding/load-recipient-branding';
import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
import { isRecipientAuthorized } from '@documenso/lib/server-only/document/is-recipient-authorized';
import { getRecipientByToken } from '@documenso/lib/server-only/recipient/get-recipient-by-token';
@@ -11,8 +10,6 @@ import { TimerOffIcon } from 'lucide-react';
import { Link } from 'react-router';
import { DocumentSigningAuthPageView } from '~/components/general/document-signing/document-signing-auth-page';
import { RecipientBranding } from '~/components/general/recipient-branding';
import { useCspNonce } from '~/utils/nonce';
import { truncateTitle } from '~/utils/truncate-title';
import type { Route } from './+types/expired';
@@ -35,8 +32,6 @@ export async function loader({ params, request }: Route.LoaderArgs) {
throw new Response('Not Found', { status: 404 });
}
const branding = await loadRecipientBrandingByTeamId({ teamId: document.teamId });
const title = document.title;
const recipient = await getRecipientByToken({ token }).catch(() => null);
@@ -59,66 +54,55 @@ export async function loader({ params, request }: Route.LoaderArgs) {
isDocumentAccessValid: true,
recipientEmail,
title,
branding,
};
}
return {
isDocumentAccessValid: false,
recipientEmail,
branding,
};
}
export default function ExpiredSigningPage({ loaderData }: Route.ComponentProps) {
const { sessionData } = useOptionalSession();
const user = sessionData?.user;
const cspNonce = useCspNonce();
const { isDocumentAccessValid, recipientEmail, title, branding } = loaderData;
const { isDocumentAccessValid, recipientEmail, title } = loaderData;
if (!isDocumentAccessValid) {
return (
<>
<RecipientBranding branding={branding} cspNonce={cspNonce} />
<DocumentSigningAuthPageView email={recipientEmail} />
</>
);
return <DocumentSigningAuthPageView email={recipientEmail} />;
}
return (
<>
<RecipientBranding branding={branding} cspNonce={cspNonce} />
<div className="flex flex-col items-center pt-24 lg:pt-36 xl:pt-44">
<Badge variant="neutral" size="default" title={title} className="mb-6 rounded-xl border bg-transparent">
{truncateTitle(title ?? '')}
</Badge>
<div className="flex flex-col items-center pt-24 lg:pt-36 xl:pt-44">
<Badge variant="neutral" size="default" title={title} className="mb-6 rounded-xl border bg-transparent">
{truncateTitle(title ?? '')}
</Badge>
<div className="flex flex-col items-center">
<div className="flex items-center gap-x-4">
<TimerOffIcon className="h-10 w-10 text-orange-500" />
<div className="flex flex-col items-center">
<div className="flex items-center gap-x-4">
<TimerOffIcon className="h-10 w-10 text-orange-500" />
<h2 className="max-w-[35ch] text-center font-semibold text-2xl leading-normal md:text-3xl lg:text-4xl">
<Trans>Signing Deadline Expired</Trans>
</h2>
</div>
<p className="mt-6 max-w-[60ch] text-center text-muted-foreground text-sm">
<Trans>
The signing deadline for this document has passed. Please contact the document owner if you need a new
copy to sign.
</Trans>
</p>
{user && (
<Button className="mt-6" asChild>
<Link to={`/`}>
<Trans>Return Home</Trans>
</Link>
</Button>
)}
<h2 className="max-w-[35ch] text-center font-semibold text-2xl leading-normal md:text-3xl lg:text-4xl">
<Trans>Signing Deadline Expired</Trans>
</h2>
</div>
<p className="mt-6 max-w-[60ch] text-center text-muted-foreground text-sm">
<Trans>
The signing deadline for this document has passed. Please contact the document owner if you need a new copy
to sign.
</Trans>
</p>
{user && (
<Button className="mt-6" asChild>
<Link to={`/`}>
<Trans>Return Home</Trans>
</Link>
</Button>
)}
</div>
</>
</div>
);
}
@@ -1,6 +1,5 @@
import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session';
import { useOptionalSession } from '@documenso/lib/client-only/providers/session';
import { loadRecipientBrandingByTeamId } from '@documenso/lib/server-only/branding/load-recipient-branding';
import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
import { isRecipientAuthorized } from '@documenso/lib/server-only/document/is-recipient-authorized';
import { getFieldsForToken } from '@documenso/lib/server-only/field/get-fields-for-token';
@@ -13,8 +12,6 @@ import { XCircle } from 'lucide-react';
import { Link } from 'react-router';
import { DocumentSigningAuthPageView } from '~/components/general/document-signing/document-signing-auth-page';
import { RecipientBranding } from '~/components/general/recipient-branding';
import { useCspNonce } from '~/utils/nonce';
import { truncateTitle } from '~/utils/truncate-title';
import type { Route } from './+types/rejected';
@@ -37,8 +34,6 @@ export async function loader({ params, request }: Route.LoaderArgs) {
throw new Response('Not Found', { status: 404 });
}
const branding = await loadRecipientBrandingByTeamId({ teamId: document.teamId });
const truncatedTitle = truncateTitle(document.title);
const [fields, recipient] = await Promise.all([
@@ -65,7 +60,6 @@ export async function loader({ params, request }: Route.LoaderArgs) {
isDocumentAccessValid: true,
recipientReference,
truncatedTitle,
branding,
};
}
@@ -73,67 +67,57 @@ export async function loader({ params, request }: Route.LoaderArgs) {
return {
isDocumentAccessValid: false,
recipientReference,
branding,
};
}
export default function RejectedSigningPage({ loaderData }: Route.ComponentProps) {
const { sessionData } = useOptionalSession();
const user = sessionData?.user;
const cspNonce = useCspNonce();
const { isDocumentAccessValid, recipientReference, truncatedTitle, branding } = loaderData;
const { isDocumentAccessValid, recipientReference, truncatedTitle } = loaderData;
if (!isDocumentAccessValid) {
return (
<>
<RecipientBranding branding={branding} cspNonce={cspNonce} />
<DocumentSigningAuthPageView email={recipientReference} />
</>
);
return <DocumentSigningAuthPageView email={recipientReference} />;
}
return (
<>
<RecipientBranding branding={branding} cspNonce={cspNonce} />
<div className="flex flex-col items-center pt-24 lg:pt-36 xl:pt-44">
<Badge variant="neutral" size="default" className="mb-6 rounded-xl border bg-transparent">
{truncatedTitle}
</Badge>
<div className="flex flex-col items-center pt-24 lg:pt-36 xl:pt-44">
<Badge variant="neutral" size="default" className="mb-6 rounded-xl border bg-transparent">
{truncatedTitle}
</Badge>
<div className="flex flex-col items-center">
<div className="flex items-center gap-x-4">
<XCircle className="h-10 w-10 text-destructive" />
<div className="flex flex-col items-center">
<div className="flex items-center gap-x-4">
<XCircle className="h-10 w-10 text-destructive" />
<h2 className="max-w-[35ch] text-center font-semibold text-2xl leading-normal md:text-3xl lg:text-4xl">
<Trans>Document Rejected</Trans>
</h2>
</div>
<div className="mt-4 flex items-center text-center text-destructive text-sm">
<Trans>You have rejected this document</Trans>
</div>
<p className="mt-6 max-w-[60ch] text-center text-muted-foreground text-sm">
<Trans>
The document owner has been notified of your decision. They may contact you with further instructions if
necessary.
</Trans>
</p>
<p className="mt-2 max-w-[60ch] text-center text-muted-foreground text-sm">
<Trans>No further action is required from you at this time.</Trans>
</p>
{user && (
<Button className="mt-6" asChild>
<Link to={`/`}>
<Trans>Return Home</Trans>
</Link>
</Button>
)}
<h2 className="max-w-[35ch] text-center font-semibold text-2xl leading-normal md:text-3xl lg:text-4xl">
<Trans>Document Rejected</Trans>
</h2>
</div>
<div className="mt-4 flex items-center text-center text-destructive text-sm">
<Trans>You have rejected this document</Trans>
</div>
<p className="mt-6 max-w-[60ch] text-center text-muted-foreground text-sm">
<Trans>
The document owner has been notified of your decision. They may contact you with further instructions if
necessary.
</Trans>
</p>
<p className="mt-2 max-w-[60ch] text-center text-muted-foreground text-sm">
<Trans>No further action is required from you at this time.</Trans>
</p>
{user && (
<Button className="mt-6" asChild>
<Link to={`/`}>
<Trans>Return Home</Trans>
</Link>
</Button>
)}
</div>
</>
</div>
);
}
@@ -1,5 +1,4 @@
import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session';
import { loadRecipientBrandingByTeamId } from '@documenso/lib/server-only/branding/load-recipient-branding';
import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
import { getEnvelopeById } from '@documenso/lib/server-only/envelope/get-envelope-by-id';
import { getRecipientByToken } from '@documenso/lib/server-only/recipient/get-recipient-by-token';
@@ -11,9 +10,6 @@ import type { Team } from '@prisma/client';
import { DocumentStatus, EnvelopeType } from '@prisma/client';
import { Link, redirect } from 'react-router';
import { RecipientBranding } from '~/components/general/recipient-branding';
import { useCspNonce } from '~/utils/nonce';
import type { Route } from './+types/waiting';
export async function loader({ params, request }: Route.LoaderArgs) {
@@ -65,55 +61,48 @@ export async function loader({ params, request }: Route.LoaderArgs) {
const documentPathForEditing = isOwnerOrTeamMember && team ? formatDocumentsPath(team.url) + '/' + document.id : null;
const branding = await loadRecipientBrandingByTeamId({ teamId: document.teamId });
return {
documentPathForEditing,
branding,
};
}
export default function WaitingForTurnToSignPage({ loaderData }: Route.ComponentProps) {
const { documentPathForEditing, branding } = loaderData;
const cspNonce = useCspNonce();
const { documentPathForEditing } = loaderData;
return (
<>
<RecipientBranding branding={branding} cspNonce={cspNonce} />
<div className="relative flex flex-col items-center justify-center px-4 py-12 sm:px-6 lg:px-8">
<div className="w-full max-w-md text-center">
<h2 className="font-bold text-3xl tracking-tigh">
<Trans>Waiting for Your Turn</Trans>
</h2>
<div className="relative flex flex-col items-center justify-center px-4 py-12 sm:px-6 lg:px-8">
<div className="w-full max-w-md text-center">
<h2 className="font-bold text-3xl tracking-tigh">
<Trans>Waiting for Your Turn</Trans>
</h2>
<p className="mt-2 text-muted-foreground text-sm">
<Trans>
It's currently not your turn to sign. You will receive an email with instructions once it's your turn to
sign the document.
</Trans>
</p>
<p className="mt-2 text-muted-foreground text-sm">
<Trans>
It's currently not your turn to sign. You will receive an email with instructions once it's your turn to
sign the document.
</Trans>
</p>
<p className="mt-4 text-muted-foreground text-sm">
<Trans>Please check your email for updates.</Trans>
</p>
<p className="mt-4 text-muted-foreground text-sm">
<Trans>Please check your email for updates.</Trans>
</p>
<div className="mt-4">
{documentPathForEditing ? (
<Button variant="link" asChild>
<Link to={documentPathForEditing}>
<Trans>Were you trying to edit this document instead?</Trans>
</Link>
</Button>
) : (
<Button variant="link" asChild>
<Link to="/">
<Trans>Return Home</Trans>
</Link>
</Button>
)}
</div>
<div className="mt-4">
{documentPathForEditing ? (
<Button variant="link" asChild>
<Link to={documentPathForEditing}>
<Trans>Were you trying to edit this document instead?</Trans>
</Link>
</Button>
) : (
<Button variant="link" asChild>
<Link to="/">
<Trans>Return Home</Trans>
</Link>
</Button>
)}
</div>
</div>
</>
</div>
);
}
@@ -3,9 +3,9 @@ import {
IS_GOOGLE_SSO_ENABLED,
IS_MICROSOFT_SSO_ENABLED,
IS_OIDC_SSO_ENABLED,
isSignupEnabledForProvider,
OIDC_PROVIDER_LABEL,
} from '@documenso/lib/constants/auth';
import { env } from '@documenso/lib/utils/env';
import { isValidReturnTo, normalizeReturnTo } from '@documenso/lib/utils/is-valid-return-to';
import { Alert, AlertDescription } from '@documenso/ui/primitives/alert';
import { msg } from '@lingui/core/macro';
@@ -32,11 +32,6 @@ export async function loader({ request }: Route.LoaderArgs) {
const isMicrosoftSSOEnabled = IS_MICROSOFT_SSO_ENABLED;
const isOIDCSSOEnabled = IS_OIDC_SSO_ENABLED;
const oidcProviderLabel = OIDC_PROVIDER_LABEL;
const isSignupEnabled =
isSignupEnabledForProvider('email') ||
(IS_GOOGLE_SSO_ENABLED && isSignupEnabledForProvider('google')) ||
(IS_MICROSOFT_SSO_ENABLED && isSignupEnabledForProvider('microsoft')) ||
(IS_OIDC_SSO_ENABLED && isSignupEnabledForProvider('oidc'));
let returnTo = new URL(request.url).searchParams.get('returnTo') ?? undefined;
@@ -50,15 +45,13 @@ export async function loader({ request }: Route.LoaderArgs) {
isGoogleSSOEnabled,
isMicrosoftSSOEnabled,
isOIDCSSOEnabled,
isSignupEnabled,
oidcProviderLabel,
returnTo,
};
}
export default function SignIn({ loaderData }: Route.ComponentProps) {
const { isGoogleSSOEnabled, isMicrosoftSSOEnabled, isOIDCSSOEnabled, isSignupEnabled, oidcProviderLabel, returnTo } =
loaderData;
const { isGoogleSSOEnabled, isMicrosoftSSOEnabled, isOIDCSSOEnabled, oidcProviderLabel, returnTo } = loaderData;
const { _ } = useLingui();
@@ -102,7 +95,7 @@ export default function SignIn({ loaderData }: Route.ComponentProps) {
returnTo={returnTo}
/>
{!isEmbeddedRedirect && isSignupEnabled && (
{!isEmbeddedRedirect && env('NEXT_PUBLIC_DISABLE_SIGNUP') !== 'true' && (
<p className="mt-6 text-center text-muted-foreground text-sm">
<Trans>
Don't have an account?{' '}
@@ -1,9 +1,5 @@
import {
IS_GOOGLE_SSO_ENABLED,
IS_MICROSOFT_SSO_ENABLED,
IS_OIDC_SSO_ENABLED,
isSignupEnabledForProvider,
} from '@documenso/lib/constants/auth';
import { IS_GOOGLE_SSO_ENABLED, IS_MICROSOFT_SSO_ENABLED, IS_OIDC_SSO_ENABLED } from '@documenso/lib/constants/auth';
import { env } from '@documenso/lib/utils/env';
import { isValidReturnTo, normalizeReturnTo } from '@documenso/lib/utils/is-valid-return-to';
import { msg } from '@lingui/core/macro';
import { redirect } from 'react-router';
@@ -18,15 +14,14 @@ export function meta() {
}
export function loader({ request }: Route.LoaderArgs) {
const isEmailPasswordSignupEnabled = isSignupEnabledForProvider('email');
const isGoogleSignupEnabled = IS_GOOGLE_SSO_ENABLED && isSignupEnabledForProvider('google');
const isMicrosoftSignupEnabled = IS_MICROSOFT_SSO_ENABLED && isSignupEnabledForProvider('microsoft');
const isOidcSignupEnabled = IS_OIDC_SSO_ENABLED && isSignupEnabledForProvider('oidc');
const NEXT_PUBLIC_DISABLE_SIGNUP = env('NEXT_PUBLIC_DISABLE_SIGNUP');
const isAnySignupEnabled =
isEmailPasswordSignupEnabled || isGoogleSignupEnabled || isMicrosoftSignupEnabled || isOidcSignupEnabled;
// SSR env variables.
const isGoogleSSOEnabled = IS_GOOGLE_SSO_ENABLED;
const isMicrosoftSSOEnabled = IS_MICROSOFT_SSO_ENABLED;
const isOIDCSSOEnabled = IS_OIDC_SSO_ENABLED;
if (!isAnySignupEnabled) {
if (NEXT_PUBLIC_DISABLE_SIGNUP === 'true') {
throw redirect('/signin');
}
@@ -35,30 +30,22 @@ export function loader({ request }: Route.LoaderArgs) {
returnTo = isValidReturnTo(returnTo) ? normalizeReturnTo(returnTo) : undefined;
return {
isEmailPasswordSignupEnabled,
isGoogleSignupEnabled,
isMicrosoftSignupEnabled,
isOidcSignupEnabled,
isGoogleSSOEnabled,
isMicrosoftSSOEnabled,
isOIDCSSOEnabled,
returnTo,
};
}
export default function SignUp({ loaderData }: Route.ComponentProps) {
const {
isEmailPasswordSignupEnabled,
isGoogleSignupEnabled,
isMicrosoftSignupEnabled,
isOidcSignupEnabled,
returnTo,
} = loaderData;
const { isGoogleSSOEnabled, isMicrosoftSSOEnabled, isOIDCSSOEnabled, returnTo } = loaderData;
return (
<SignUpForm
className="w-screen max-w-screen-2xl px-4 md:px-16 lg:-my-16"
isEmailPasswordSignupEnabled={isEmailPasswordSignupEnabled}
isGoogleSignupEnabled={isGoogleSignupEnabled}
isMicrosoftSignupEnabled={isMicrosoftSignupEnabled}
isOidcSignupEnabled={isOidcSignupEnabled}
isGoogleSSOEnabled={isGoogleSSOEnabled}
isMicrosoftSSOEnabled={isMicrosoftSSOEnabled}
isOIDCSSOEnabled={isOIDCSSOEnabled}
returnTo={returnTo}
/>
);
+5 -32
View File
@@ -1,4 +1,4 @@
import { CSS_LENGTH_REGEX, type TCssVarsSchema } from '@documenso/lib/types/css-vars';
import type { TCssVarsSchema } from '@documenso/lib/types/css-vars';
import { colord } from 'colord';
import { toKebabCase } from 'remeda';
@@ -12,50 +12,23 @@ export const toNativeCssVars = (vars: TCssVarsSchema) => {
const color = colord(value);
const { h, s, l } = color.toHsl();
// Tailwind's theme.css consumes these via `hsl(var(--token))`. CSS
// Color 4 space-separated `hsl()` requires `%` on saturation and
// lightness — without it, the function is invalid and the property
// falls back to its initial value (which is why bare numeric output
// here used to silently break customer colours).
cssVars[`--${toKebabCase(key)}`] = `${h} ${s}% ${l}%`;
cssVars[`--${toKebabCase(key)}`] = `${h} ${s} ${l}`;
}
}
// Defence in depth: radius is interpolated raw into the rendered <style>
// block, so anything outside the length pattern is a CSS-injection vector.
// The Zod schema rejects bad values at the API boundary; this re-check
// protects against schema drift and any path that bypasses validation.
if (radius && CSS_LENGTH_REGEX.test(radius)) {
cssVars[`--radius`] = radius;
if (radius) {
cssVars[`--radius`] = `${radius}`;
}
return cssVars;
};
/**
* Pure-string sibling of `toNativeCssVars` — returns the same set of CSS custom
* property declarations as a single string suitable for SSR inlining inside a
* rule block. Does not touch the DOM.
*
* Example: { background: '#111', radius: '0.5rem' }
* -> "--background: 0 0% 6.7%; --radius: 0.5rem;"
*
* Saturation and lightness include the `%` suffix that
* `hsl(var(--token))` requires under CSS Color 4 space-separated syntax.
*/
export const toNativeCssVarsString = (vars: TCssVarsSchema): string => {
const map = toNativeCssVars(vars);
return Object.entries(map)
.map(([k, v]) => `${k}: ${v};`)
.join(' ');
};
export const injectCss = (options: { css?: string; cssVars?: TCssVarsSchema }) => {
const { css, cssVars } = options;
if (css) {
const style = document.createElement('style');
style.textContent = css;
style.innerHTML = css;
document.head.appendChild(style);
}
-17
View File
@@ -1,5 +1,3 @@
import { useRouteLoaderData } from 'react-router';
/**
* Returns the supplied CSP nonce only when rendering on the server.
*
@@ -21,18 +19,3 @@ import { useRouteLoaderData } from 'react-router';
* scripts inherit trust via `'strict-dynamic'`.
*/
export const nonce = (value: string | undefined): string | undefined => (typeof window === 'undefined' ? value : '');
/**
* Reads the per-request CSP nonce surfaced by the root loader. Use this
* inside any non-root route component that needs to render a `<style>`,
* `<script>`, or other element that the CSP gates by nonce.
*
* Centralised here so the cast is in one place — if the root loader's
* `nonce` field is ever renamed/removed, only this function needs updating
* (and TypeScript will catch it at the cast site).
*/
export const useCspNonce = (): string | undefined => {
const rootData = useRouteLoaderData('root') as { nonce?: string } | undefined;
return rootData?.nonce;
};
-4
View File
@@ -1,4 +0,0 @@
User-agent: *
Disallow: /sign/
Disallow: /d/
Disallow: /embed/
+6 -28
View File
@@ -1,4 +1,3 @@
import { getFileExtensionForMimeType } from '@documenso/lib/constants/upload';
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';
@@ -25,8 +24,6 @@ type DocumentDataInput = {
type: DocumentDataType;
data: string;
initialData: string;
originalData?: string | null;
originalMimeType?: string | null;
};
type EnvelopeForPendingDownload = {
@@ -87,19 +84,7 @@ const handleStaticFileRequest = async ({
isDownload,
context: c,
}: StaticFileRequestOptions) => {
const shouldServeOriginalSourceFile =
version === 'original' &&
documentData.originalData &&
documentData.originalMimeType &&
documentData.originalMimeType !== 'application/pdf';
const documentDataToUse = shouldServeOriginalSourceFile
? documentData.originalData!
: version === 'signed'
? documentData.data
: documentData.initialData;
const contentType = shouldServeOriginalSourceFile ? documentData.originalMimeType! : 'application/pdf';
const documentDataToUse = version === 'signed' ? documentData.data : documentData.initialData;
const etag = Buffer.from(sha256(documentDataToUse)).toString('hex');
@@ -120,7 +105,7 @@ const handleStaticFileRequest = async ({
return c.json({ error: 'File not found' }, 404);
}
c.header('Content-Type', contentType);
c.header('Content-Type', 'application/pdf');
c.header('ETag', etag);
if (!isDownload) {
@@ -132,17 +117,10 @@ const handleStaticFileRequest = async ({
}
if (isDownload) {
const baseTitle = title.replace(/\.[^/.]+$/, '');
let filename: string;
if (version === 'signed') {
filename = `${baseTitle}_signed.pdf`;
} else if (shouldServeOriginalSourceFile) {
const extension = getFileExtensionForMimeType(documentData.originalMimeType!);
filename = `${baseTitle}${extension}`;
} else {
filename = `${baseTitle}.pdf`;
}
// Generate filename following the pattern from envelope-download-dialog.tsx
const baseTitle = title.replace(/\.pdf$/, '');
const suffix = version === 'signed' ? '_signed.pdf' : '.pdf';
const filename = `${baseTitle}${suffix}`;
c.header('Content-Disposition', contentDisposition(filename));
+1 -1
View File
@@ -46,7 +46,7 @@ export const filesRoute = new Hono<HonoEnv>()
return c.json({ error: 'File too large' }, 400);
}
const result = await putNormalizedPdfFileServerSide({ file });
const result = await putNormalizedPdfFileServerSide(file);
return c.json(result);
} catch (error) {
+32 -17
View File
@@ -16,6 +16,37 @@ const require = createRequire(import.meta.url);
const pdfjsDistPath = path.dirname(require.resolve('pdfjs-dist/package.json'));
const cMapsDir = normalizePath(path.join(pdfjsDistPath, 'cmaps'));
const honoDevServer = 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.
...devServerDefaults.exclude.map((pattern) =>
pattern instanceof RegExp && pattern.source === '.*\\.css$' ? /^(?!\/api\/jobs\/board\/).*\.css$/ : pattern,
),
'/assets/**',
'/src/app/**',
/\?(?:inline|url|no-inline|raw|import(?:&(?:inline|url|no-inline|raw)?)?)$/,
],
});
// Restrict @hono/vite-dev-server's full-reload to backend files. Otherwise it
// fires on any SSR-loaded module change, which kills HMR for the entire app.
const honoServerDir = path.resolve(__dirname, 'server') + path.sep;
const upstreamHandleHotUpdate = honoDevServer.handleHotUpdate;
honoDevServer.handleHotUpdate = async function (ctx) {
if (!ctx.file.startsWith(honoServerDir)) {
return;
}
return typeof upstreamHandleHotUpdate === 'function'
? upstreamHandleHotUpdate.call(this, ctx)
: upstreamHandleHotUpdate?.handler.call(this, ctx);
};
/**
* Note: We load the env variables externally so we can have runtime enviroment variables
* for docker.
@@ -45,23 +76,7 @@ export default defineConfig({
macrosPlugin(),
lingui(),
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.
...devServerDefaults.exclude.map((pattern) =>
pattern instanceof RegExp && pattern.source === '.*\\.css$' ? /^(?!\/api\/jobs\/board\/).*\.css$/ : pattern,
),
'/assets/**',
'/src/app/**',
/\?(?:inline|url|no-inline|raw|import(?:&(?:inline|url|no-inline|raw)?)?)$/,
],
}),
honoDevServer,
],
ssr: {
noExternal: ['react-dropzone', 'plausible-tracker'],
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 809 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

+1 -5
View File
@@ -253,9 +253,5 @@ Here's a markdown table documenting all the provided environment variables:
| `NEXT_PRIVATE_MAILCHANNELS_DKIM_PRIVATE_KEY` | The private key for DKIM signing with MailChannels for the `mailchannels` transport. |
| `NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT` | The maximum document upload limit displayed to the user (in MB). |
| `NEXT_PUBLIC_POSTHOG_KEY` | The optional PostHog key for analytics and feature flags. |
| `NEXT_PUBLIC_DISABLE_SIGNUP` | Master switch. Set to `true` to disable all signup methods (incl. organisation OIDC portal). |
| `NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP` | Set to `true` to disable email/password signup only. SSO signup is unaffected. |
| `NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP` | Set to `true` to block new accounts via Google. Existing Google-linked users can still sign in. |
| `NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP` | Set to `true` to block new accounts via Microsoft. Existing linked users can still sign in. |
| `NEXT_PUBLIC_DISABLE_OIDC_SIGNUP` | Set to `true` to block new accounts via OIDC (incl. organisation portal). Existing users unaffected.|
| `NEXT_PUBLIC_DISABLE_SIGNUP` | Whether to disable user signups through the /signup page. |
| `NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS` | Comma-separated list of email domains allowed to sign up (e.g., `example.com,acme.org`). |
-9
View File
@@ -48,15 +48,6 @@ services:
entrypoint: sh
command: -c 'mkdir -p /data/documenso && minio server /data --console-address ":9001" --address ":9002"'
gotenberg:
image: gotenberg/gotenberg:8
container_name: gotenberg
ports:
- 3001:3000
command:
- 'gotenberg'
- '--api-timeout=30s'
volumes:
minio:
redis:
-4
View File
@@ -59,10 +59,6 @@ services:
- NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT=${NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT}
- NEXT_PUBLIC_POSTHOG_KEY=${NEXT_PUBLIC_POSTHOG_KEY}
- NEXT_PUBLIC_DISABLE_SIGNUP=${NEXT_PUBLIC_DISABLE_SIGNUP}
- NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP=${NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP}
- NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP=${NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP}
- NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP=${NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP}
- NEXT_PUBLIC_DISABLE_OIDC_SIGNUP=${NEXT_PUBLIC_DISABLE_OIDC_SIGNUP}
- NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS=${NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS}
- NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=${NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH:-/opt/documenso/cert.p12}
- NEXT_PRIVATE_SIGNING_PASSPHRASE=${NEXT_PRIVATE_SIGNING_PASSPHRASE}
-15
View File
@@ -30670,8 +30670,6 @@
"pino": "^9.14.0",
"pino-pretty": "^13.1.2",
"playwright": "1.56.1",
"postcss": "^8.5.6",
"postcss-selector-parser": "^7.1.0",
"posthog-js": "^1.297.2",
"posthog-node": "4.18.0",
"react": "^18",
@@ -30689,19 +30687,6 @@
"vitest": "^4.0.18"
}
},
"packages/lib/node_modules/postcss-selector-parser": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
},
"engines": {
"node": ">=4"
}
},
"packages/prettier-config": {
"name": "@documenso/prettier-config",
"version": "0.0.0",
+3 -5
View File
@@ -814,11 +814,9 @@ export const ApiContractV1Implementation = tsr.router(ApiContractV1, {
});
const newDocumentData = await putNormalizedPdfFileServerSide({
file: {
name: fileName,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(prefilled),
},
name: fileName,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(prefilled),
});
await prisma.envelopeItem.update({
@@ -32,14 +32,10 @@ const TEST_RAW_CSS = '.e2e-css-test-marker { color: red; }';
* Expected HSL values after conversion by `toNativeCssVars`:
* - colord('#ff0000').toHsl() → { h: 0, s: 100, l: 50 }
* - colord('#00ff00').toHsl() → { h: 120, s: 100, l: 50 }
*
* The `%` on saturation and lightness is required: theme.css consumes these
* via `hsl(var(--token))`, and CSS Color 4 space-separated `hsl()` rejects
* bare numbers there. See `apps/remix/app/utils/css-vars.ts`.
*/
const EXPECTED_CSS_VARS = {
'--background': '0 100% 50%',
'--primary': '120 100% 50%',
'--background': '0 100 50',
'--primary': '120 100 50',
'--radius': '1rem',
};
@@ -68,7 +64,7 @@ const enableEmbedAuthoringWhiteLabel = async (userId: number) => {
const DEFAULT_BODY_BG_COLOR = 'rgb(255, 255, 255)';
/**
* When `--background` is set to `0 100% 50%` (hsl(0, 100%, 50%)) the body background
* When `--background` is set to `0 100 50` (hsl(0, 100%, 50%)) the body background
* resolves to pure red via the Tailwind `bg-background` → `hsl(var(--background))` chain.
*/
const INJECTED_BODY_BG_COLOR = 'rgb(255, 0, 0)';
@@ -1,9 +1,10 @@
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { isEmailDomainAllowedForSignup, isSignupEnabledForProvider } from '@documenso/lib/constants/auth';
import { isEmailDomainAllowedForSignup } from '@documenso/lib/constants/auth';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { onCreateUserHook } from '@documenso/lib/server-only/user/create-user';
import { deletedServiceAccountEmail } from '@documenso/lib/server-only/user/service-accounts/deleted-account';
import { legacyServiceAccountEmail } from '@documenso/lib/server-only/user/service-accounts/legacy-service-account';
import { env } from '@documenso/lib/utils/env';
import { isValidReturnTo, normalizeReturnTo } from '@documenso/lib/utils/is-valid-return-to';
import { prisma } from '@documenso/prisma';
import { UserSecurityAuditLogType } from '@prisma/client';
@@ -114,8 +115,8 @@ export const handleOAuthCallbackUrl = async (options: HandleOAuthCallbackUrlOpti
return c.redirect(redirectPath, 302);
}
// Check if signups are disabled for this provider.
if (!isSignupEnabledForProvider(clientOptions.id as 'google' | 'microsoft' | 'oidc')) {
// Check if signups are disabled.
if (env('NEXT_PUBLIC_DISABLE_SIGNUP') === 'true') {
const errorUrl = new URL('/signin', NEXT_PUBLIC_WEBAPP_URL());
errorUrl.searchParams.set('error', AuthenticationErrorCode.SignupDisabled);
@@ -1,5 +1,4 @@
import { sendOrganisationAccountLinkConfirmationEmail } from '@documenso/ee/server-only/lib/send-organisation-account-link-confirmation-email';
import { isSignupEnabledForProvider } from '@documenso/lib/constants/auth';
import { AppError } from '@documenso/lib/errors/app-error';
import { onCreateUserHook } from '@documenso/lib/server-only/user/create-user';
import { formatOrganisationLoginUrl } from '@documenso/lib/utils/organisation-authentication-portal';
@@ -66,14 +65,6 @@ export const handleOAuthOrganisationCallbackUrl = async (options: HandleOAuthOrg
// Handle new user.
if (!userToLink) {
if (!isSignupEnabledForProvider('oidc')) {
const errorUrl = new URL(formatOrganisationLoginUrl(orgUrl));
errorUrl.searchParams.set('error', AuthenticationErrorCode.SignupDisabled);
return c.redirect(errorUrl.toString(), 302);
}
userToLink = await prisma.user.create({
data: {
email: email,
@@ -1,4 +1,4 @@
import { isEmailDomainAllowedForSignup, isSignupEnabledForProvider } from '@documenso/lib/constants/auth';
import { isEmailDomainAllowedForSignup } from '@documenso/lib/constants/auth';
import { EMAIL_VERIFICATION_STATE } from '@documenso/lib/constants/email';
import { AppError } from '@documenso/lib/errors/app-error';
import { jobsClient } from '@documenso/lib/jobs/client';
@@ -27,6 +27,7 @@ import { deletedServiceAccountEmail } from '@documenso/lib/server-only/user/serv
import { legacyServiceAccountEmail } from '@documenso/lib/server-only/user/service-accounts/legacy-service-account';
import { updatePassword } from '@documenso/lib/server-only/user/update-password';
import { verifyEmail } from '@documenso/lib/server-only/user/verify-email';
import { env } from '@documenso/lib/utils/env';
import { prisma } from '@documenso/prisma';
import { sValidator } from '@hono/standard-validator';
import { compare } from '@node-rs/bcrypt';
@@ -183,7 +184,7 @@ export const emailPasswordRoute = new Hono<HonoAuthContext>()
.post('/signup', sValidator('json', ZSignUpSchema), async (c) => {
const requestMetadata = c.get('requestMetadata');
if (!isSignupEnabledForProvider('email')) {
if (env('NEXT_PUBLIC_DISABLE_SIGNUP') === 'true') {
throw new AppError(AuthenticationErrorCode.SignupDisabled, {
statusCode: 400,
});
+4 -37
View File
@@ -13,7 +13,7 @@ type DownloadPDFProps = {
/**
* Specifies which version of the document to download.
* 'signed': Downloads the signed version (default).
* 'original': Downloads the original version (may be DOCX, PNG, JPEG if converted).
* '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.
@@ -21,29 +21,6 @@ type DownloadPDFProps = {
version?: DocumentVersion;
};
const getFilenameFromContentDisposition = (header: string | null): string | null => {
if (!header) {
return null;
}
const filenameStarMatch = header.match(/filename\*=(?:UTF-8''|utf-8'')([^;]+)/i);
if (filenameStarMatch) {
return decodeURIComponent(filenameStarMatch[1]);
}
const filenameMatch = header.match(/filename="([^"]+)"/);
if (filenameMatch) {
return filenameMatch[1];
}
const filenameNoQuotesMatch = header.match(/filename=([^;\s]+)/);
if (filenameNoQuotesMatch) {
return filenameNoQuotesMatch[1];
}
return null;
};
const versionToFilenameSuffix = (version: DocumentVersion): string => {
switch (version) {
case 'signed':
@@ -63,22 +40,12 @@ export const downloadPDF = async ({ envelopeItem, token, fileName, version = 'si
version,
});
const response = await fetch(downloadUrl);
const blob = await response.blob();
const blob = await fetch(downloadUrl).then(async (res) => await res.blob());
const contentDisposition = response.headers.get('Content-Disposition');
const serverFilename = getFilenameFromContentDisposition(contentDisposition);
let filename: string;
if (serverFilename) {
filename = serverFilename;
} else {
const baseTitle = (fileName ?? 'document').replace(/\.[^/.]+$/, '');
filename = `${baseTitle}${versionToFilenameSuffix(version)}`;
}
const baseTitle = (fileName ?? 'document').replace(/\.pdf$/, '');
downloadFile({
filename,
filename: `${baseTitle}${versionToFilenameSuffix(version)}`,
data: blob,
});
};
@@ -1,14 +1,5 @@
import { extractPostHogConfig } from '@documenso/lib/constants/feature-flags';
let posthogPromise: Promise<typeof import('posthog-js')> | null = null;
const getPosthog = async () => {
if (!posthogPromise) {
posthogPromise = import('posthog-js');
}
return posthogPromise;
};
import { posthog } from 'posthog-js';
export function useAnalytics() {
// const featureFlags = useFeatureFlags();
@@ -25,9 +16,7 @@ export function useAnalytics() {
return;
}
void getPosthog().then(({ default: posthog }) => {
posthog.capture(event, properties);
});
posthog.capture(event, properties);
};
/**
@@ -41,9 +30,7 @@ export function useAnalytics() {
return;
}
void getPosthog().then(({ default: posthog }) => {
posthog.captureException(error, properties);
});
posthog.captureException(error, properties);
};
/**
-19
View File
@@ -119,22 +119,3 @@ export const isEmailDomainAllowedForSignup = (email: string): boolean => {
return allowedDomains.includes(emailDomain);
};
/**
* Check if signup is enabled for the given provider.
* The master switch takes precedence over the per-provider flags.
*/
export const isSignupEnabledForProvider = (provider: 'email' | 'google' | 'microsoft' | 'oidc'): boolean => {
if (env('NEXT_PUBLIC_DISABLE_SIGNUP') === 'true') {
return false;
}
const flagMap = {
email: 'NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP',
google: 'NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP',
microsoft: 'NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP',
oidc: 'NEXT_PUBLIC_DISABLE_OIDC_SIGNUP',
} as const;
return env(flagMap[provider]) !== 'true';
};
-11
View File
@@ -1,11 +0,0 @@
/**
* Maximum length (in characters) of the user-supplied custom CSS for branding.
* Bound enforced at the TRPC request boundary on both the organisation and
* team settings update routes. The sanitiser is run after this check; this
* limit is purely a request-size guard.
*
* 256 KB — generous enough for hand-written branding CSS and the occasional
* compiled-from-Tailwind-or-similar paste, while still keeping a request
* cap so a malicious or runaway payload can't exhaust PostCSS/server memory.
*/
export const BRANDING_CSS_MAX_LENGTH = 256 * 1024;
-58
View File
@@ -1,58 +0,0 @@
import type { TCssVarsSchema } from '../types/css-vars';
/**
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*
* KEEP THIS FILE IN SYNC WITH `packages/ui/styles/theme.css`.
*
* These are the light-mode default values for the CSS custom properties
* defined under `:root` in the theme stylesheet, exposed here as hex strings
* so they can be used as defaults for colour-picker UI components and other
* places that don't render through CSS variables.
*
* If you change a value in `theme.css`, update it here too. There is NO
* automated check linking the two files; they have drifted historically
* and will drift again unless you update both.
*
* Computed via `colord({ h, s, l }).toHex()` — see the inline HSL comments
* for the source-of-truth values from `theme.css`.
*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*/
export const DEFAULT_BRAND_COLORS = {
background: '#ffffff', // 0 0% 100%
foreground: '#0f172a', // 222.2 47.4% 11.2%
muted: '#f1f5f9', // 210 40% 96.1%
mutedForeground: '#64748b', // 215.4 16.3% 46.9%
popover: '#ffffff', // 0 0% 100%
popoverForeground: '#0f172a', // 222.2 47.4% 11.2%
card: '#ffffff', // 0 0% 100%
cardBorder: '#e2e8f0', // 214.3 31.8% 91.4%
cardForeground: '#0f172a', // 222.2 47.4% 11.2%
fieldCard: '#e2f8d3', // 95 74% 90%
fieldCardBorder: '#a2e771', // 95.08 71.08% 67.45%
fieldCardForeground: '#0f172a', // 222.2 47.4% 11.2%
widget: '#f7f7f7', // 0 0% 97%
widgetForeground: '#f2f2f2', // 0 0% 95%
border: '#e2e8f0', // 214.3 31.8% 91.4%
input: '#e2e8f0', // 214.3 31.8% 91.4%
primary: '#a2e771', // 95.08 71.08% 67.45%
primaryForeground: '#162c07', // 95.08 71.08% 10%
secondary: '#f1f5f9', // 210 40% 96.1%
secondaryForeground: '#0f172a', // 222.2 47.4% 11.2%
accent: '#f1f5f9', // 210 40% 96.1%
accentForeground: '#0f172a', // 222.2 47.4% 11.2%
destructive: '#ff0000', // 0 100% 50%
destructiveForeground: '#f8fafc', // 210 40% 98%
ring: '#a2e771', // 95.08 71.08% 67.45%
warning: '#e1cb05', // 54 96% 45%
envelopeEditorBackground: '#f8fafc', //210 40% 98.04%
// `cardBorderTint` is intentionally excluded from the colour-picker UI:
// unlike the rest of these tokens it is consumed via `rgb(var(--token))`
// (not `hsl(...)`) and stored as raw RGB triplets in `theme.css`. It does
// not flow through `toNativeCssVars` and is not user-customisable from the
// branding form. `radius` is a length, not a colour, so it lives in
// `DEFAULT_BRAND_RADIUS` below.
} as const satisfies Record<keyof Omit<TCssVarsSchema, 'radius' | 'cardBorderTint'>, string>;
export const DEFAULT_BRAND_RADIUS = '0.5rem';
-23
View File
@@ -1,23 +0,0 @@
import { env } from '@documenso/lib/utils/env';
export const ALLOWED_UPLOAD_MIME_TYPES: Record<string, string[]> = {
'application/pdf': ['.pdf'],
'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],
'image/jpeg': ['.jpg', '.jpeg'],
'image/png': ['.png'],
};
export const isAllowedMimeType = (mimeType: string): boolean =>
mimeType in ALLOWED_UPLOAD_MIME_TYPES;
export const getGotenbergUrl = (): string | undefined => env('NEXT_PRIVATE_GOTENBERG_URL');
export const getGotenbergTimeout = (): number => {
const timeout = env('NEXT_PRIVATE_GOTENBERG_TIMEOUT');
return timeout ? parseInt(timeout, 10) : 30_000;
};
export const getFileExtensionForMimeType = (mimeType: string): string => {
const extensions = ALLOWED_UPLOAD_MIME_TYPES[mimeType];
return extensions?.[0] ?? '.pdf';
};
@@ -471,7 +471,7 @@ const decorateAndSignPdf = async ({
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(pdfBytes),
},
{ initialData: envelopeItem.documentData.initialData },
envelopeItem.documentData.initialData,
);
return {
-2
View File
@@ -57,8 +57,6 @@
"pino": "^9.14.0",
"pino-pretty": "^13.1.2",
"playwright": "1.56.1",
"postcss": "^8.5.6",
"postcss-selector-parser": "^7.1.0",
"posthog-js": "^1.297.2",
"posthog-node": "4.18.0",
"react": "^18",
@@ -1,55 +0,0 @@
import { IS_BILLING_ENABLED } from '../../constants/app';
import type { TCssVarsSchema } from '../../types/css-vars';
import { ZCssVarsSchema } from '../../types/css-vars';
import { getOrganisationClaimByTeamId } from '../organisation/get-organisation-claims';
import { getTeamSettings } from '../team/get-team-settings';
export type RecipientBrandingPayload = {
allowCustomBranding: boolean;
hidePoweredBy: boolean;
colors: TCssVarsSchema | null;
css: string | null;
};
/**
* Resolve the branding payload for a recipient-facing route, given the team
* the envelope/document belongs to. Reads inherited team-or-org branding settings,
* checks the org's claim flags, and returns a payload safe to send to the client.
*
* Returns a minimal disabled payload if the team is not on a plan that allows
* custom branding.
*/
export const loadRecipientBrandingByTeamId = async ({
teamId,
}: {
teamId: number;
}): Promise<RecipientBrandingPayload> => {
const billingEnabled = IS_BILLING_ENABLED();
const [settings, claim] = await Promise.all([
getTeamSettings({ teamId }),
billingEnabled ? getOrganisationClaimByTeamId({ teamId }).catch(() => null) : Promise.resolve(null),
]);
const allowCustomBranding = !billingEnabled || claim?.flags?.embedSigningWhiteLabel === true;
const hidePoweredBy = !billingEnabled || claim?.flags?.hidePoweredBy === true;
if (!allowCustomBranding) {
return {
allowCustomBranding: false,
hidePoweredBy,
colors: null,
css: null,
};
}
// brandingColors is stored as JSON; parse defensively. Drop unknown keys via Zod.
const parsedColors = settings.brandingColors ? ZCssVarsSchema.safeParse(settings.brandingColors) : null;
return {
allowCustomBranding: true,
hidePoweredBy,
colors: parsedColors?.success ? parsedColors.data : null,
css: settings.brandingCss && settings.brandingCss.length > 0 ? settings.brandingCss : null,
};
};
@@ -11,24 +11,14 @@ export type CreateDocumentDataOptions = {
* If not provided, the current data will be used.
*/
initialData?: string;
originalData?: string;
originalMimeType?: string;
};
export const createDocumentData = async ({
type,
data,
initialData,
originalData,
originalMimeType,
}: CreateDocumentDataOptions) => {
export const createDocumentData = async ({ type, data, initialData }: CreateDocumentDataOptions) => {
return await prisma.documentData.create({
data: {
type,
data,
initialData: initialData || data,
originalData,
originalMimeType,
},
});
};
@@ -43,8 +43,6 @@ export const getDocumentByAccessToken = async ({ token }: GetDocumentByAccessTok
type: true,
data: true,
initialData: true,
originalMimeType: true,
originalData: true,
},
},
},
@@ -74,8 +74,6 @@ export const sendDocument = async ({ id, userId, teamId, sendEmail, requestMetad
id: true,
data: true,
initialData: true,
originalMimeType: true,
originalData: true,
},
},
},
@@ -338,11 +336,9 @@ const injectFormValuesIntoDocument = async (
}
const newDocumentData = await putNormalizedPdfFileServerSide({
file: {
name: fileName,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(prefilled),
},
name: fileName,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(prefilled),
});
await prisma.envelopeItem.update({
@@ -49,7 +49,6 @@ export const duplicateEnvelope = async ({ id, userId, teamId, overrides }: Dupli
data: true,
initialData: true,
type: true,
originalMimeType: true,
},
},
},
@@ -1,50 +0,0 @@
import { isAllowedMimeType } from '../../constants/upload';
import { AppError } from '../../errors/app-error';
import { convertFileToPdfViaGotenberg } from '../gotenberg/gotenberg-client';
type FileInput = {
name: string;
type: string;
arrayBuffer: () => Promise<ArrayBuffer>;
};
export type ConvertToPdfResult = {
pdfBuffer: Buffer;
originalBuffer: Buffer | null;
originalMimeType: string;
};
export const convertToPdfIfNeeded = async (file: FileInput): Promise<ConvertToPdfResult> => {
const originalMimeType = file.type;
if (!isAllowedMimeType(originalMimeType)) {
throw new AppError('UNSUPPORTED_FILE_TYPE', {
message: `File type '${originalMimeType}' is not supported`,
userMessage: 'This file type is not supported. Please upload a PDF, DOCX, JPEG, or PNG file.',
statusCode: 400,
});
}
const arrayBuffer = await file.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
if (originalMimeType === 'application/pdf') {
return {
pdfBuffer: buffer,
originalBuffer: null,
originalMimeType,
};
}
const pdfBuffer = await convertFileToPdfViaGotenberg({
file: buffer,
filename: file.name,
mimeType: originalMimeType,
});
return {
pdfBuffer,
originalBuffer: buffer,
originalMimeType,
};
};
@@ -1,81 +0,0 @@
import { getGotenbergTimeout, getGotenbergUrl } from '../../constants/upload';
import { AppError } from '../../errors/app-error';
export type ConvertFileToPdfOptions = {
file: Buffer;
filename: string;
mimeType: string;
};
export const convertFileToPdfViaGotenberg = async ({
file,
filename,
mimeType,
}: ConvertFileToPdfOptions): Promise<Buffer> => {
const gotenbergUrl = getGotenbergUrl();
if (!gotenbergUrl) {
throw new AppError('CONVERSION_SERVICE_UNAVAILABLE', {
message: 'Gotenberg URL is not configured',
userMessage: 'File conversion service is not available. Please upload a PDF file instead.',
statusCode: 503,
});
}
const formData = new FormData();
const blob = new Blob([file], { type: mimeType });
formData.append('files', blob, filename);
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), getGotenbergTimeout());
try {
const response = await fetch(`${gotenbergUrl}/forms/libreoffice/convert`, {
method: 'POST',
body: formData,
signal: controller.signal,
});
clearTimeout(timeoutId);
if (!response.ok) {
const errorText = await response.text().catch(() => 'Unknown error');
console.error(`Gotenberg conversion failed: ${response.status} - ${errorText}`);
throw new AppError('CONVERSION_FAILED', {
message: `Gotenberg returned status ${response.status}: ${errorText}`,
userMessage:
'Failed to convert the file to PDF. Please try again or upload a PDF file instead.',
statusCode: 400,
});
}
const arrayBuffer = await response.arrayBuffer();
return Buffer.from(arrayBuffer);
} catch (error) {
clearTimeout(timeoutId);
if (error instanceof AppError) {
throw error;
}
if (error instanceof Error && error.name === 'AbortError') {
throw new AppError('CONVERSION_SERVICE_UNAVAILABLE', {
message: 'Gotenberg request timed out',
userMessage:
'File conversion timed out. Please try again with a smaller file or upload a PDF instead.',
statusCode: 503,
});
}
console.error('Gotenberg conversion error:', error);
throw new AppError('CONVERSION_SERVICE_UNAVAILABLE', {
message: `Failed to reach Gotenberg: ${error instanceof Error ? error.message : 'Unknown error'}`,
userMessage:
'File conversion service is temporarily unavailable. Please upload a PDF file instead.',
statusCode: 503,
});
}
};
@@ -39,8 +39,6 @@ export const getTeamSettings = async ({ userId, teamId }: GetTeamSettingsOptions
teamSettings.brandingLogo = organisationSettings.brandingLogo;
teamSettings.brandingUrl = organisationSettings.brandingUrl;
teamSettings.brandingCompanyDetails = organisationSettings.brandingCompanyDetails;
teamSettings.brandingColors = organisationSettings.brandingColors;
teamSettings.brandingCss = organisationSettings.brandingCss;
}
return extractDerivedTeamSettings(organisationSettings, teamSettings);
@@ -477,11 +477,9 @@ export const createDocumentFromTemplate = async ({
}
const duplicatedFile = await putNormalizedPdfFileServerSide({
file: {
name: titleToUse,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(buffer),
},
name: titleToUse,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(buffer),
});
const newDocumentData = await prisma.documentData.create({
+219 -95
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-05-07 05:08\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"
@@ -1540,6 +1542,10 @@ msgstr "Erlaube allen Organisationsmitgliedern den Zugriff auf dieses Team"
msgid "Allow document recipients to reply directly to this email address"
msgstr "Erlauben Sie den Dokumentempfängern, direkt an diese E-Mail-Adresse zu antworten"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr "Persönliche Organisationen erlauben"
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1599,6 +1605,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 +1698,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 +1937,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 +2001,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 +2033,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 +2307,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 +2340,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 +2405,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 +2781,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 +2813,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 +2889,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 +2903,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 +2941,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 +3331,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 +3436,10 @@ msgstr "Standard­einstellungen, die auf dieses Team angewendet werden. Vererbte
msgid "Default Signature Settings"
msgstr "Standard-Signatureinstellungen"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Signing Reminders"
msgstr "Standard-Signaturerinnerungen"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Default Time Zone"
msgstr "Standard-Zeitzone"
@@ -3437,13 +3463,11 @@ msgstr "Dokumenten­eigentum delegieren"
msgid "Delegate Document Ownership"
msgstr "Dokumenteigentum delegieren"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "delete"
msgstr "löschen"
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
@@ -3457,7 +3481,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 +3836,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 +3961,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 +3991,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 +4008,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 +4127,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 +4205,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 +4300,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)"
@@ -4299,6 +4319,7 @@ msgstr "Nicht übertragen (alle Dokumente löschen)"
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4395,10 +4416,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 +4799,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,12 +4925,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "Umschlag-ID"
@@ -4963,7 +4982,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 +5683,10 @@ msgstr "So funktioniert es:"
msgid "Hey Im Timur"
msgstr "Hey, ich bin Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Hallo {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Hallo, {userName},"
@@ -5677,7 +5699,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 +5887,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"
@@ -6316,6 +6338,8 @@ msgstr "Lade Vorschläge ..."
#: apps/remix/app/components/embed/embed-client-loading.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains.$id.tsx
msgid "Loading..."
msgstr "Wird geladen..."
@@ -6568,6 +6592,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"
@@ -6884,10 +6916,18 @@ msgstr "Noch keine Ordner."
msgid "No further action is required from you at this time."
msgstr "Es sind derzeit keine weiteren Maßnahmen Ihrerseits erforderlich."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "No groups found"
msgstr "Keine Gruppen gefunden"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "No License Configured"
msgstr "Keine Lizenz konfiguriert"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "No members found"
msgstr "Keine Mitglieder gefunden"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "No members selected"
msgstr "Keine Mitglieder ausgewählt"
@@ -6939,6 +6979,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 +7132,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:"
@@ -7399,6 +7442,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "Bezahlt"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr "Teilweise unterzeichnet"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7654,7 +7702,10 @@ 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/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr "Bitte kontaktieren Sie <0>den Support</0>, wenn Sie Fragen haben."
#: 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."
@@ -7671,8 +7722,6 @@ msgstr "Bitte geben Sie einen aussagekräftigen Namen für Ihr Token ein. Dies w
msgid "Please enter a number"
msgstr "Bitte gib eine Zahl ein"
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "Bitte geben Sie einen gültigen Namen ein."
@@ -7713,13 +7762,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 +7775,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 +7835,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 +8225,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 +8316,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 +8350,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 +8382,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 +8396,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 +8413,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
@@ -8712,10 +8787,18 @@ msgstr "Dokumente suchen..."
msgid "Search folders..."
msgstr "Ordner durchsuchen..."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Search groups by name"
msgstr "Gruppen nach Namen suchen"
#: packages/ui/components/common/language-switcher-dialog.tsx
msgid "Search languages..."
msgstr "Sprachen suchen..."
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Search members by name or email"
msgstr "Mitglieder nach Namen oder E-Mail suchen"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
msgid "Secret"
msgstr "Geheim"
@@ -8835,7 +8918,8 @@ msgstr "Standardrolle auswählen"
msgid "Select direction"
msgstr "Richtung auswählen"
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Select groups"
msgstr "Gruppen auswählen"
@@ -8847,9 +8931,8 @@ msgstr "Mitgliedsgruppen auswählen, die dem Team hinzugefügt werden sollen."
msgid "Select groups to add to this team"
msgstr "Wählen Sie Gruppen aus, die diesem Team hinzugefügt werden sollen"
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Select members"
msgstr "Mitglieder auswählen"
@@ -8993,6 +9076,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 +9243,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 +9442,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 +9497,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 +9509,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 +9754,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 +10082,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 +10090,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 +10106,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 +10279,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 +10323,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 +10551,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 +10632,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 +10678,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 +10705,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 +10713,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."
@@ -10705,6 +10811,10 @@ msgstr "Dieses Kuvert kann momentan nicht verteilt werden. Bitte versuchen Sie e
msgid "This envelope could not be resent at this time. Please try again."
msgstr "Dieses Kuvert konnte derzeit nicht erneut gesendet werden. Bitte versuchen Sie es erneut."
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr "Diese Funktion ist in Ihrem aktuellen Tarif nicht verfügbar."
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "Dieses Feld kann nicht geändert oder gelöscht werden. Wenn Sie den direkten Link dieser Vorlage teilen oder zu Ihrem öffentlichen Profil hinzufügen, kann jeder, der darauf zugreift, seinen Namen und seine E-Mail-Adresse eingeben und die ihm zugewiesenen Felder ausfüllen."
@@ -10772,10 +10882,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 +10993,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."
@@ -11657,10 +11775,6 @@ msgstr "Benutzerprofile sind hier!"
msgid "User settings"
msgstr "Benutzereinstellungen"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "Ein Benutzer mit dieser E-Mail existiert bereits. Bitte verwenden Sie eine andere E-Mail-Adresse."
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11818,6 +11932,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 +12099,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."
@@ -12200,6 +12320,10 @@ msgstr "Wir konnten das Token nicht in Ihre Zwischenablage kopieren. Bitte versu
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "Wir konnten Ihren Wiederherstellungscode nicht in Ihre Zwischenablage kopieren. Bitte versuchen Sie es erneut."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr "Wir konnten Ihr Konto nicht erstellen. Wenn Sie bereits ein Konto haben, versuchen Sie sich stattdessen anzumelden."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "Wir konnten Ihr Konto nicht erstellen. Bitte überprüfen Sie die von Ihnen angegebenen Informationen und versuchen Sie es erneut."
@@ -12246,6 +12370,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
@@ -12391,6 +12519,10 @@ msgstr "Was Sie mit Teams machen können:"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "Wenn aktiviert, können Unterzeichner auswählen, wer als nächster in der Reihenfolge unterzeichnen soll, anstatt der vorgegebenen Reihenfolge zu folgen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr "Wenn diese Option aktiviert ist, erhalten Benutzer, die sich zum ersten Mal über SSO anmelden, zusätzlich ihre eigene persönliche Organisation."
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "Wenn Sie auf Fortfahren klicken, werden Sie aufgefordert, den ersten verfügbaren Authenticator auf Ihrem System hinzuzufügen."
@@ -12479,10 +12611,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 +12628,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 +12679,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 +13009,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 +13463,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 +13530,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 +13626,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 +13643,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"
+198 -92
View File
@@ -40,10 +40,6 @@ msgstr "“{documentName}” has been signed"
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}” was signed by all signers"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" has been successfully deleted"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
@@ -52,6 +48,10 @@ msgstr "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sig
msgid "\"{title}\" has been successfully deleted"
msgstr "\"{title}\" has been successfully deleted"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr "\"{title}\" has been successfully hidden"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Team Name\" has invited you to sign \"example document\"."
@@ -296,14 +296,17 @@ msgid "{0}/{1}"
msgstr "{0}/{1}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr "{amount, plural, one {Day} other {Days}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr "{amount, plural, one {Month} other {Months}}"
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr "{amount, plural, one {Week} other {Weeks}}"
@@ -1138,6 +1141,7 @@ msgstr "Action"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1483,7 +1487,6 @@ msgstr "All email domains have been synced successfully"
msgid "All Folders"
msgstr "All Folders"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "All inserted signatures will be voided"
@@ -1496,7 +1499,6 @@ msgstr "All items must be of the same type."
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "All recipients have signed. The document is being processed and you will receive an email copy shortly."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1535,6 +1537,10 @@ msgstr "Allow all organisation members to access this team"
msgid "Allow document recipients to reply directly to this email address"
msgstr "Allow document recipients to reply directly to this email address"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr "Allow Personal Organisations"
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1594,6 +1600,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 +1693,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 +1932,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 +1996,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 +2028,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 +2302,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 +2335,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 +2400,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 +2776,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 +2808,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 +2884,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 +2898,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 +2936,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 +3326,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 +3431,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 +3458,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 +3476,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 +3831,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 +3956,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 +3986,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 +4003,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 +4122,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 +4200,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 +4295,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)"
@@ -4294,6 +4314,7 @@ msgstr "Don't transfer (Delete all documents)"
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4390,10 +4411,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 +4794,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,12 +4920,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "Envelope ID"
@@ -4958,7 +4977,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 +5678,10 @@ msgstr "Here's how it works:"
msgid "Hey Im Timur"
msgstr "Hey Im Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Hi {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Hi {userName},"
@@ -5672,7 +5694,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 +5882,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 +6585,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 +6964,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 +7117,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:"
@@ -7394,6 +7427,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "Paid"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr "Partial"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7649,7 +7687,10 @@ 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/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr "Please contact <0>support</0> if you have any questions."
#: 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."
@@ -7666,8 +7707,6 @@ msgstr "Please enter a meaningful name for your token. This will help you identi
msgid "Please enter a number"
msgstr "Please enter a number"
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "Please enter a valid name."
@@ -7708,13 +7747,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 +7760,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 +7820,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 +8210,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 +8301,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 +8335,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 +8367,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 +8381,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 +8398,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 +9053,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 +9220,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 +9419,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 +9474,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 +9486,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 +9731,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 +10059,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 +10067,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 +10083,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 +10256,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 +10300,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 +10528,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 +10609,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 +10655,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 +10682,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 +10690,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."
@@ -10700,6 +10788,10 @@ msgstr "This envelope could not be distributed at this time. Please try again."
msgid "This envelope could not be resent at this time. Please try again."
msgstr "This envelope could not be resent at this time. Please try again."
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr "This feature is not available on your current plan"
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
@@ -10767,10 +10859,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 +10970,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."
@@ -11652,10 +11752,6 @@ msgstr "User profiles are here!"
msgid "User settings"
msgstr "User settings"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "User with this email already exists. Please use a different email address."
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11813,6 +11909,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 +12076,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."
@@ -12195,6 +12297,10 @@ msgstr "We were unable to copy the token to your clipboard. Please try again."
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "We were unable to copy your recovery code to your clipboard. Please try again."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr "We were unable to create your account. If you already have an account, try signing in instead."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "We were unable to create your account. Please review the information you provided and try again."
@@ -12241,6 +12347,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
@@ -12386,6 +12496,10 @@ msgstr "What you can do with teams:"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "When you click continue, you will be prompted to add the first available authenticator on your system."
@@ -12474,10 +12588,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 +12605,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 +12656,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 +12986,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 +13440,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 +13507,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 +13603,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 +13620,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"
+220 -96
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: es\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-05-07 05:08\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"
@@ -1540,6 +1542,10 @@ msgstr "Permitir a todos los miembros de la organización acceder a este equipo"
msgid "Allow document recipients to reply directly to this email address"
msgstr "Permitir que los destinatarios del documento respondan directamente a esta dirección de correo electrónico"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr "Permitir organizaciones personales"
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1599,6 +1605,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 +1698,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 +1937,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 +2001,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 +2033,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 +2307,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 +2340,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 +2405,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 +2781,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 +2813,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 +2889,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 +2903,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 +2941,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 +3331,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 +3436,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 +3463,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 +3481,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 +3836,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 +3961,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 +3991,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 +4008,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 +4127,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 +4205,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 +4300,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)"
@@ -4299,6 +4319,7 @@ msgstr "No transferir (Eliminar todos los documentos)"
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4395,10 +4416,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 +4799,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,12 +4925,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "ID de Sobre"
@@ -4963,7 +4982,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 +5683,10 @@ msgstr "Así es como funciona:"
msgid "Hey Im Timur"
msgstr "Hola, soy Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Hola, {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Hola, {userName},"
@@ -5677,7 +5699,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 +5887,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"
@@ -6316,6 +6338,8 @@ msgstr "Cargando sugerencias..."
#: apps/remix/app/components/embed/embed-client-loading.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains.$id.tsx
msgid "Loading..."
msgstr "Cargando..."
@@ -6568,6 +6592,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"
@@ -6884,10 +6916,18 @@ msgstr "Aún no hay carpetas."
msgid "No further action is required from you at this time."
msgstr "No further action is required from you at this time."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "No groups found"
msgstr "No se encontraron grupos"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "No License Configured"
msgstr "Licencia no configurada"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "No members found"
msgstr "No se encontraron miembros"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "No members selected"
msgstr "No hay miembros seleccionados"
@@ -6939,6 +6979,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 +7132,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:"
@@ -7399,6 +7442,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "De pago"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr "Parcial"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7654,7 +7702,10 @@ 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/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr "Comunícate con el <0>soporte</0> si tienes alguna pregunta."
#: 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."
@@ -7671,8 +7722,6 @@ msgstr "Por favor, ingresa un nombre significativo para tu token. Esto te ayudar
msgid "Please enter a number"
msgstr "Por favor ingresa un número"
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "Por favor, introduce un nombre válido."
@@ -7713,13 +7762,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 +7775,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 +7835,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 +8225,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 +8316,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 +8350,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 +8382,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 +8396,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 +8413,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
@@ -8712,10 +8787,18 @@ msgstr "Buscar documentos..."
msgid "Search folders..."
msgstr "Buscar carpetas..."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Search groups by name"
msgstr "Buscar grupos por nombre"
#: packages/ui/components/common/language-switcher-dialog.tsx
msgid "Search languages..."
msgstr "Buscar idiomas..."
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Search members by name or email"
msgstr "Buscar miembros por nombre o correo electrónico"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
msgid "Secret"
msgstr "Secreto"
@@ -8835,7 +8918,8 @@ msgstr "Seleccione el rol predeterminado"
msgid "Select direction"
msgstr "Seleccione dirección"
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Select groups"
msgstr "Seleccionar grupos"
@@ -8847,9 +8931,8 @@ msgstr "Seleccionar grupos de miembros para añadir al equipo."
msgid "Select groups to add to this team"
msgstr "Seleccionar grupos para añadir a este equipo"
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Select members"
msgstr "Seleccione miembros"
@@ -8993,6 +9076,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 +9243,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 +9442,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 +9497,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 +9509,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 +9754,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 +10082,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 +10090,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 +10106,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 +10279,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 +10323,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 +10551,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 +10632,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 +10678,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 +10705,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 +10713,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."
@@ -10705,6 +10811,10 @@ msgstr "Este sobre no se pudo distribuir en este momento. Por favor, inténtelo
msgid "This envelope could not be resent at this time. Please try again."
msgstr "Este sobre no se pudo reenviar en este momento. Por favor, inténtelo de nuevo."
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr "Esta función no está disponible en tu plan actual"
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "Este campo no se puede modificar ni eliminar. Cuando comparta el enlace directo de esta plantilla o lo agregue a su perfil público, cualquiera que acceda podrá ingresar su nombre y correo electrónico, y completar los campos que se le hayan asignado."
@@ -10772,10 +10882,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 +10993,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."
@@ -11657,10 +11775,6 @@ msgstr "¡Los perfiles de usuario están aquí!"
msgid "User settings"
msgstr "Configuraciones del usuario"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "Un usuario con este correo electrónico ya existe. Por favor, use una dirección de correo diferente."
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11818,6 +11932,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 +12099,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."
@@ -12200,6 +12320,10 @@ msgstr "No pudimos copiar el token en tu portapapeles. Por favor, inténtalo de
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "No pudimos copiar tu código de recuperación en tu portapapeles. Por favor, inténtalo de nuevo."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr "No hemos podido crear tu cuenta. Si ya tienes una, intenta iniciar sesión en su lugar."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "No pudimos crear su cuenta. Revise la información que proporcionó e inténtelo de nuevo."
@@ -12246,6 +12370,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
@@ -12391,6 +12519,10 @@ msgstr "Lo que puedes hacer con los equipos:"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "Cuando está habilitado, los firmantes pueden elegir quién debe firmar a continuación en la secuencia en lugar de seguir el orden predefinido."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr "Cuando esté habilitado, los usuarios que inicien sesión mediante SSO por primera vez también recibirán su propia organización personal."
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "Cuando haces clic en continuar, se te pedirá que añadas el primer autenticador disponible en tu sistema."
@@ -12479,10 +12611,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 +12628,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 +12679,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 +13009,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 +13463,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 +13530,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 +13626,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 +13643,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"
+219 -95
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-05-07 05:08\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"
@@ -1540,6 +1542,10 @@ msgstr "Permettre à tous les membres de l'organisation d'accéder à cette équ
msgid "Allow document recipients to reply directly to this email address"
msgstr "Autoriser les destinataires du document à répondre directement à cette adresse e-mail"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr "Autoriser les organisations personnelles"
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1599,6 +1605,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 +1698,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 +1937,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 +2001,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 +2033,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 +2307,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 +2340,16 @@ msgid "Can't find someone?"
msgstr "Vous ne trouvez pas quelquun ?"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
@@ -2401,9 +2405,7 @@ msgstr "Vous ne trouvez pas quelquun ?"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
@@ -2779,6 +2781,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 +2813,10 @@ msgstr "Configurez les rôles d'équipe pour chaque groupe"
msgid "Configure the team roles for each member"
msgstr "Configurez les rôles d'équipe pour chaque membre"
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit."
msgstr "Configurer quand et à quelle fréquence des e-mails de rappel sont envoyés aux destinataires qui nont pas encore terminé la signature. Utilise le paramètre par défaut de l’équipe lorsquil est défini sur hériter."
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
@@ -2879,10 +2889,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 +2903,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 +2941,10 @@ msgstr "Contrôle le formatage du message qui sera envoyé lors de l'invitation
msgid "Controls the language for the document, including the language to be used for email notifications, and the final certificate that is generated and attached to the document."
msgstr "Contrôle la langue du document, y compris la langue à utiliser pour les notifications par email et le certificat final qui est généré et attaché au document."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing."
msgstr "Définit quand et à quelle fréquence des e-mails de rappel sont envoyés aux destinataires qui nont pas encore terminé la signature."
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
msgstr "Contrôle si les journaux d'audit seront inclus dans le document lorsqu'il est téléchargé. Les journaux d'audit peuvent toujours être téléchargés séparément sur la page des journaux."
@@ -3313,6 +3331,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 +3436,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 +3463,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 +3481,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 +3836,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 +3961,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 +3991,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 +4008,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 +4127,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 +4205,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 +4300,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)"
@@ -4299,6 +4319,7 @@ msgstr "Ne pas transférer (supprimer tous les documents)"
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4395,10 +4416,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 +4799,7 @@ msgstr "Activer les jetons dAPI d’équipe pour déléguer la propriété du
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Enabled"
msgstr "Activé"
@@ -4906,12 +4925,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "ID de l'enveloppe"
@@ -4963,7 +4982,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 +5683,10 @@ msgstr "Voici comment cela fonctionne :"
msgid "Hey Im Timur"
msgstr "Salut, je suis Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Bonjour {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Bonjour {userName},"
@@ -5677,7 +5699,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 +5887,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"
@@ -6316,6 +6338,8 @@ msgstr "Chargement des suggestions..."
#: apps/remix/app/components/embed/embed-client-loading.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains.$id.tsx
msgid "Loading..."
msgstr "Chargement..."
@@ -6568,6 +6592,14 @@ msgstr "Membre"
msgid "Member Count"
msgstr "Nombre de membres"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Member has been removed from the organisation."
msgstr "Le membre a été supprimé de lorganisation."
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Member has been removed from the team."
msgstr "Le membre a été supprimé de l’équipe."
#: apps/remix/app/components/tables/organisation-members-table.tsx
msgid "Member Since"
msgstr "Membre depuis"
@@ -6884,10 +6916,18 @@ msgstr "Aucun dossier pour le moment."
msgid "No further action is required from you at this time."
msgstr "Aucune autre action n'est requise de votre part pour le moment."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "No groups found"
msgstr "Aucun groupe trouvé"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "No License Configured"
msgstr "Aucune licence configurée"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "No members found"
msgstr "Aucun membre trouvé"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "No members selected"
msgstr "Aucun membre sélectionné"
@@ -6939,6 +6979,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 +7132,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:"
@@ -7399,6 +7442,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "Payé"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr "Partiel"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7654,7 +7702,10 @@ 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/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr "Veuillez contacter <0>lassistance</0> si vous avez des questions."
#: 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."
@@ -7671,8 +7722,6 @@ msgstr "Veuillez entrer un nom significatif pour votre token. Cela vous aidera
msgid "Please enter a number"
msgstr "Veuillez entrer un nombre"
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "Veuiillez entrer un nom valide."
@@ -7713,13 +7762,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 +7775,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 +7835,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 +8225,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 +8316,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 +8350,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 +8382,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 +8396,10 @@ msgstr "Supprimer le groupe d'organisation"
msgid "Remove organisation member"
msgstr "Supprimer le membre de l'organisation"
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "Remove Organisation Member"
msgstr "Supprimer un membre de lorganisation"
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
msgid "Remove recipient"
msgstr "Supprimer le destinataire"
@@ -8342,6 +8413,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
@@ -8712,10 +8787,18 @@ msgstr "Rechercher des documents..."
msgid "Search folders..."
msgstr "Rechercher dans les dossiers..."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Search groups by name"
msgstr "Rechercher des groupes par nom"
#: packages/ui/components/common/language-switcher-dialog.tsx
msgid "Search languages..."
msgstr "Rechercher des langues..."
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Search members by name or email"
msgstr "Rechercher des membres par nom ou adresse e-mail"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
msgid "Secret"
msgstr "Secret"
@@ -8835,7 +8918,8 @@ msgstr "Sélectionner le rôle par défaut"
msgid "Select direction"
msgstr "Sélectionner la direction"
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Select groups"
msgstr "Sélectionnez des groupes"
@@ -8847,9 +8931,8 @@ msgstr "Sélectionnez des groupes de membres à ajouter à l'équipe."
msgid "Select groups to add to this team"
msgstr "Sélectionnez des groupes à ajouter à cette équipe"
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Select members"
msgstr "Sélectionnez des membres"
@@ -8993,6 +9076,10 @@ msgstr "Envoyer les documents aux destinataires immédiatement"
msgid "Send Envelope"
msgstr "Envoyer lenveloppe"
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "Send first reminder after"
msgstr "Envoyer le premier rappel après"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "Send on Behalf of Team"
msgstr "Envoyer au nom de l'équipe"
@@ -9156,6 +9243,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 +9442,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 +9497,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 +9509,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 +9754,10 @@ msgid "Subscription Status"
msgstr "Statut de labonnement"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10082,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 +10090,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 +10106,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 +10279,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 +10323,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 +10551,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 +10632,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 +10678,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 +10705,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 +10713,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."
@@ -10705,6 +10811,10 @@ msgstr "Cette enveloppe n'a pas pu être distribuée pour le moment. Veuillez r
msgid "This envelope could not be resent at this time. Please try again."
msgstr "Cette enveloppe n'a pas pu être renvoyée pour le moment. Veuillez réessayer."
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr "Cette fonctionnalité nest pas disponible avec votre offre actuelle"
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "Ce champ ne peut pas être modifié ou supprimé. Lorsque vous partagez le lien direct de ce modèle ou l'ajoutez à votre profil public, toute personne qui y accède peut saisir son nom et son email, et remplir les champs qui lui sont attribués."
@@ -10772,10 +10882,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 +10993,10 @@ msgstr "Le titre ne peut pas être vide"
msgid "To accept this invitation you must create an account."
msgstr "Pour accepter cette invitation, vous devez créer un compte."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "Pour ajouter des membres à cette équipe, ils doivent dabord être invités dans lorganisation. Seuls les administrateurs et les responsables de lorganisation peuvent inviter de nouveaux membres — veuillez contacter lun dentre eux pour quil invite des membres en votre nom."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "Pour ajouter des membres à cette équipe, vous devez dabord les ajouter à lorganisation."
@@ -11657,10 +11775,6 @@ msgstr "Les profils des utilisateurs sont ici !"
msgid "User settings"
msgstr "Paramètres de l'utilisateur"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "Un utilisateur avec cet e-mail existe déjà. Veuillez utiliser une adresse e-mail différente."
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11818,6 +11932,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 +12099,11 @@ msgstr "Nous n'avons pas pu créer un client Stripe. Veuillez réessayer."
msgid "We couldn't enable AI features right now. Please try again."
msgstr "Nous navons pas pu activer les fonctionnalités dIA pour le moment. Veuillez réessayer."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "We couldn't remove this member. Please try again later."
msgstr "Nous navons pas pu supprimer ce membre. Veuillez réessayer plus tard."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
msgid "We couldn't update the group. Please try again."
msgstr "Nous n'avons pas pu mettre à jour le groupe. Veuillez réessayer."
@@ -12200,6 +12320,10 @@ msgstr "Nous n'avons pas pu copier le token dans votre presse-papiers. Veuillez
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "Nous n'avons pas pu copier votre code de récupération dans votre presse-papiers. Veuillez réessayer."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr "Nous navons pas pu créer votre compte. Si vous avez déjà un compte, essayez plutôt de vous connecter."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "Nous n'avons pas pu créer votre compte. Veuillez vérifier les informations que vous avez fournies et réessayer."
@@ -12246,6 +12370,10 @@ msgstr "Nous n'avons pas pu mettre à jour vos préférences de document pour le
msgid "We were unable to update your email preferences at this time, please try again later"
msgstr "Nous n'avons pas pu mettre à jour vos préférences d'e-mail pour le moment, veuillez réessayer plus tard"
#: apps/remix/app/components/forms/signin.tsx
msgid "We were unable to verify that you're human. Please try again."
msgstr "Nous navons pas pu vérifier que vous êtes humain. Veuillez réessayer."
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-password.tsx
@@ -12391,6 +12519,10 @@ msgstr "Ce que vous pouvez faire avec les équipes :"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "Lorsqu'il est activé, les signataires peuvent choisir qui doit signer ensuite au lieu de suivre l'ordre prédéfini."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr "Lorsque cette option est activée, les utilisateurs qui se connectent via SSO pour la première fois reçoivent également leur propre organisation personnelle."
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "Lorsque vous cliquez sur continuer, vous serez invité à ajouter le premier authentificateur disponible sur votre système."
@@ -12479,10 +12611,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 +12628,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 +12679,14 @@ msgstr "Vous êtes sur le point de supprimer l'utilisateur suivant de <0>{0}</0>
msgid "You are about to remove the following user from <0>{teamName}</0>."
msgstr "Vous êtes sur le point de supprimer l'utilisateur suivant de <0>{teamName}</0>."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
msgid "You are about to remove the following user from the organisation <0>{organisationName}</0>:"
msgstr "Vous êtes sur le point de supprimer lutilisateur suivant de lorganisation <0>{organisationName}</0> :"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
msgstr "Vous êtes sur le point de retirer lutilisateur suivant de l’équipe <0>{teamName}</0> :"
#. placeholder {0}: teamEmail.team.name
#. placeholder {1}: teamEmail.team.url
#: apps/remix/app/components/general/teams/team-email-usage.tsx
@@ -12877,6 +13009,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 +13463,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 +13530,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 +13626,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 +13643,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"
+219 -95
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: it\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-05-07 05:08\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"
@@ -1540,6 +1542,10 @@ msgstr "Consenti a tutti i membri dell'organizzazione di accedere a questo team"
msgid "Allow document recipients to reply directly to this email address"
msgstr "Consenti ai destinatari del documento di rispondere direttamente a questo indirizzo email"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr "Consenti organizzazioni personali"
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1599,6 +1605,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 +1698,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 +1937,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 +2001,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 +2033,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 +2307,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 +2340,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 +2405,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 +2781,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 +2813,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 +2889,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 +2903,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 +2941,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 +3331,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 +3436,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 +3463,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 +3481,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 +3836,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 +3961,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 +3991,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 +4008,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 +4127,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 +4205,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 +4300,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)"
@@ -4299,6 +4319,7 @@ msgstr "Non trasferire (elimina tutti i documenti)"
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4395,10 +4416,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 +4799,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,12 +4925,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "ID Busta"
@@ -4963,7 +4982,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 +5683,10 @@ msgstr "Ecco come funziona:"
msgid "Hey Im Timur"
msgstr "Ciao, sono Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Ciao {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Ciao {userName},"
@@ -5677,7 +5699,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 +5887,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"
@@ -6316,6 +6338,8 @@ msgstr "Caricamento suggerimenti..."
#: apps/remix/app/components/embed/embed-client-loading.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains.$id.tsx
msgid "Loading..."
msgstr "Caricamento in corso..."
@@ -6568,6 +6592,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"
@@ -6884,10 +6916,18 @@ msgstr "Nessuna cartella ancora."
msgid "No further action is required from you at this time."
msgstr "Non sono richieste ulteriori azioni da parte tua in questo momento."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "No groups found"
msgstr "Nessun gruppo trovato"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "No License Configured"
msgstr "Nessuna licenza configurata"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "No members found"
msgstr "Nessun membro trovato"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "No members selected"
msgstr "Nessun membro selezionato"
@@ -6939,6 +6979,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 +7132,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:"
@@ -7399,6 +7442,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "A pagamento"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr "Parzialmente firmato"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7654,7 +7702,10 @@ 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/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr "Contatta il <0>supporto</0> se hai domande."
#: 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."
@@ -7671,8 +7722,6 @@ msgstr "Si prega di inserire un nome significativo per il proprio token. Questo
msgid "Please enter a number"
msgstr "Inserisci un numero"
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "Per favore inserisci un nome valido."
@@ -7713,13 +7762,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 +7775,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 +7835,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 +8225,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 +8316,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 +8350,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 +8382,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 +8396,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 +8413,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
@@ -8712,10 +8787,18 @@ msgstr "Cerca documenti..."
msgid "Search folders..."
msgstr "Cerca cartelle..."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Search groups by name"
msgstr "Cerca gruppi per nome"
#: packages/ui/components/common/language-switcher-dialog.tsx
msgid "Search languages..."
msgstr "Cerca lingue..."
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Search members by name or email"
msgstr "Cerca membri per nome o email"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
msgid "Secret"
msgstr "Segreto"
@@ -8835,7 +8918,8 @@ msgstr "Seleziona ruolo predefinito"
msgid "Select direction"
msgstr "Seleziona la direzione"
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Select groups"
msgstr "Seleziona gruppi"
@@ -8847,9 +8931,8 @@ msgstr "Seleziona i gruppi di membri da aggiungere al team."
msgid "Select groups to add to this team"
msgstr "Seleziona i gruppi da aggiungere a questo team"
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Select members"
msgstr "Seleziona membri"
@@ -8993,6 +9076,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 +9243,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 +9442,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 +9497,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 +9509,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 +9754,10 @@ msgid "Subscription Status"
msgstr "Stato dellabbonamento"
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
@@ -9991,7 +10082,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 +10090,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 +10106,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 +10279,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 +10323,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 +10551,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 +10632,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 +10678,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 +10705,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 +10713,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."
@@ -10705,6 +10811,10 @@ msgstr "Questa busta non può essere distribuita in questo momento. Per favore r
msgid "This envelope could not be resent at this time. Please try again."
msgstr "Questa busta non può essere reinviata in questo momento. Per favore riprova."
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr "Questa funzionalità non è disponibile nel tuo piano attuale"
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "Questo campo non può essere modificato o eliminato. Quando condividi il link diretto di questo modello o lo aggiungi al tuo profilo pubblico, chiunque vi acceda può inserire il proprio nome e email, e compilare i campi assegnati."
@@ -10772,10 +10882,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 +10993,10 @@ msgstr "Il titolo non può essere vuoto"
msgid "To accept this invitation you must create an account."
msgstr "Per accettare questo invito devi creare un account."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, they must first be invited to the organisation. Only organisation admins and managers can invite new members — please contact one of them to invite members on your behalf."
msgstr "Per aggiungere membri a questo team, devono prima essere invitati allorganizzazione. Solo gli amministratori e i responsabili dellorganizzazione possono invitare nuovi membri: contatta uno di loro per invitare membri per tuo conto."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "To add members to this team, you must first add them to the organisation."
msgstr "Per aggiungere membri a questo team, devi prima aggiungerli allorganizzazione."
@@ -11657,10 +11775,6 @@ msgstr "I profili utente sono qui!"
msgid "User settings"
msgstr "Impostazioni utente"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "Un utente con questo email esiste già. Si prega di utilizzare un indirizzo email diverso."
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11818,6 +11932,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 +12099,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."
@@ -12200,6 +12320,10 @@ msgstr "Non siamo riusciti a copiare il token negli appunti. Si prega di riprova
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "Non siamo riusciti a copiare il tuo codice di recupero negli appunti. Si prega di riprovare."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr "Non siamo riusciti a creare il tuo account. Se hai già un account, prova ad accedere invece."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "Non siamo riusciti a creare il tuo account. Si prega di rivedere le informazioni fornite e riprovare."
@@ -12246,6 +12370,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
@@ -12391,6 +12519,10 @@ msgstr "Cosa puoi fare con i team:"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "Quando abilitato, i firmatari possono scegliere chi deve firmare successivamente nella sequenza invece di seguire l'ordine predefinito."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr "Quando è abilitata, gli utenti che eseguono laccesso tramite SSO per la prima volta riceveranno anche una propria organizzazione personale."
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "Quando fai clic su continua, ti verrà chiesto di aggiungere il primo autenticatore disponibile sul tuo sistema."
@@ -12479,10 +12611,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 +12628,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 +12679,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 +13009,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 +13463,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 +13530,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 +13626,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 +13643,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"
+220 -96
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ja\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-05-07 05:08\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"
@@ -1540,6 +1542,10 @@ msgstr "すべての組織メンバーがこのチームにアクセスできる
msgid "Allow document recipients to reply directly to this email address"
msgstr "ドキュメントの受信者が、このメールアドレスに直接返信できるようにします。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr "個人用組織を許可する"
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1599,6 +1605,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 +1698,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 +1937,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 +2001,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 +2033,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 +2307,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 +2340,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 +2405,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 +2781,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 +2813,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 +2889,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 +2903,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 +2941,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 +3331,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 +3436,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 +3463,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 +3481,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 +3836,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 +3961,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 +3991,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 +4008,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 +4127,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 +4205,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 +4300,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)"
@@ -4299,6 +4319,7 @@ msgstr "転送しない(すべてのドキュメントを削除)"
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4395,10 +4416,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 +4799,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,12 +4925,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "封筒ID"
@@ -4963,7 +4982,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 +5683,10 @@ msgstr "仕組みは次のとおりです。"
msgid "Hey Im Timur"
msgstr "こんにちは、Timur です"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "{recipientName} 様"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "{userName} さん、こんにちは。"
@@ -5677,7 +5699,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 +5887,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"
@@ -6316,6 +6338,8 @@ msgstr "候補を読み込み中..."
#: apps/remix/app/components/embed/embed-client-loading.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains.$id.tsx
msgid "Loading..."
msgstr "読み込み中..."
@@ -6568,6 +6592,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 "メンバー登録日"
@@ -6884,10 +6916,18 @@ msgstr "まだフォルダーがありません。"
msgid "No further action is required from you at this time."
msgstr "現在、お客様が行う必要のある操作はありません。"
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "No groups found"
msgstr "グループが見つかりません"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "No License Configured"
msgstr "ライセンスが設定されていません"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "No members found"
msgstr "メンバーが見つかりません"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "No members selected"
msgstr "メンバーが選択されていません"
@@ -6939,6 +6979,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 +7132,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:"
@@ -7399,6 +7442,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "有料"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr "一部署名済み"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7654,7 +7702,10 @@ msgstr "メールアドレスを確認してください"
msgid "Please confirm your email address"
msgstr "メールアドレスを確認してください"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr "ご不明な点がありましたら、<0>サポート</0>までお問い合わせください。"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "この操作を元に戻したい場合は、サポートまでお問い合わせください。"
@@ -7671,8 +7722,6 @@ msgstr "トークンの用途が分かる名前を入力してください。後
msgid "Please enter a number"
msgstr "数値を入力してください"
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "有効な名前を入力してください。"
@@ -7713,13 +7762,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 +7775,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 +7835,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 +8225,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 +8316,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 +8350,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 +8382,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 +8396,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 +8413,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
@@ -8712,10 +8787,18 @@ msgstr "文書を検索..."
msgid "Search folders..."
msgstr "フォルダを検索…"
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Search groups by name"
msgstr "グループ名で検索"
#: packages/ui/components/common/language-switcher-dialog.tsx
msgid "Search languages..."
msgstr "言語を検索…"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Search members by name or email"
msgstr "名前またはメールアドレスでメンバーを検索"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
msgid "Secret"
msgstr "シークレット"
@@ -8835,7 +8918,8 @@ msgstr "デフォルトロールを選択"
msgid "Select direction"
msgstr "方向を選択"
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Select groups"
msgstr "グループを選択"
@@ -8847,9 +8931,8 @@ msgstr "チームに追加するメンバーグループを選択します。"
msgid "Select groups to add to this team"
msgstr "このチームに追加するグループを選択"
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Select members"
msgstr "メンバーを選択"
@@ -8993,6 +9076,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 +9243,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 +9442,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 +9497,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 +9509,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 +9754,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 +10082,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 +10090,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 +10106,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 +10279,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 +10323,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 +10551,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 +10632,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 +10678,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 +10705,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 +10713,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 "この文書は現在複製できません。もう一度お試しください。"
@@ -10705,6 +10811,10 @@ msgstr "この封筒は現在送信できません。もう一度お試しくだ
msgid "This envelope could not be resent at this time. Please try again."
msgstr "この封筒は現在再送信できません。もう一度お試しください。"
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr "この機能は現在ご利用中のプランではご利用いただけません"
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "このフィールドは変更も削除もできません。このテンプレートのダイレクトリンクを共有するか、公開プロフィールに追加すると、アクセスした人は自分の名前とメールアドレスを入力し、割り当てられたフィールドに入力できます。"
@@ -10772,10 +10882,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 +10993,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 "このチームにメンバーを追加するには、まずそのメンバーを組織に追加する必要があります。"
@@ -11657,10 +11775,6 @@ msgstr "ユーザープロフィール機能が登場しました!"
msgid "User settings"
msgstr "ユーザー設定"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "このメールアドレスのユーザーはすでに存在します。別のメールアドレスを使用してください。"
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11818,6 +11932,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 +12099,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 "グループを更新できませんでした。もう一度お試しください。"
@@ -12200,6 +12320,10 @@ msgstr "トークンをクリップボードにコピーできませんでした
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "リカバリーコードをクリップボードにコピーできませんでした。もう一度お試しください。"
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr "アカウントを作成できませんでした。すでにアカウントをお持ちの場合は、代わりにサインインしてください。"
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "アカウントを作成できませんでした。入力内容を確認のうえ、もう一度お試しください。"
@@ -12246,6 +12370,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
@@ -12391,6 +12519,10 @@ msgstr "チームでできること:"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "有効にすると、定義済みの順序ではなく、署名者が次に署名する人を順次選択できるようになります。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr "有効にすると、SSO で初めてサインインするユーザーには、個人用の組織も自動的に作成されます。"
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "続行をクリックすると、システム上で最初に利用可能な認証手段の追加を求められます。"
@@ -12479,10 +12611,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 +12628,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 +12679,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 +13009,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 +13463,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 +13530,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 +13626,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 +13643,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 -96
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-05-07 05:08\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"
@@ -1540,6 +1542,10 @@ msgstr "모든 조직 구성원이 이 팀에 접근할 수 있도록 허용"
msgid "Allow document recipients to reply directly to this email address"
msgstr "문서 수신자가 이 이메일 주소로 직접 회신할 수 있도록 허용합니다."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr "개인 조직 허용"
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1599,6 +1605,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 +1698,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 +1937,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 +2001,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 +2033,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 +2307,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 +2340,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 +2405,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 +2781,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 +2813,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 +2889,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 +2903,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 +2941,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 +3331,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 +3436,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 +3463,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 +3481,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 +3836,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 +3961,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 +3991,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 +4008,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 +4127,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 +4205,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 +4300,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)"
@@ -4299,6 +4319,7 @@ msgstr "전송하지 않음(모든 문서 삭제)"
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4395,10 +4416,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 +4799,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,12 +4925,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "봉투 ID"
@@ -4963,7 +4982,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 +5683,10 @@ msgstr "작동 방식은 다음과 같습니다:"
msgid "Hey Im Timur"
msgstr "안녕하세요, 저는 Timur입니다"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "{recipientName}님, 안녕하세요."
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "안녕하세요 {userName}님,"
@@ -5677,7 +5699,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 +5887,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"
@@ -6316,6 +6338,8 @@ msgstr "제안 불러오는 중..."
#: apps/remix/app/components/embed/embed-client-loading.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains.$id.tsx
msgid "Loading..."
msgstr "로딩 중..."
@@ -6568,6 +6592,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 "가입일"
@@ -6884,10 +6916,18 @@ msgstr "아직 폴더가 없습니다."
msgid "No further action is required from you at this time."
msgstr "현재 추가로 수행해야 할 작업은 없습니다."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "No groups found"
msgstr "그룹을 찾을 수 없습니다."
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "No License Configured"
msgstr "라이선스가 구성되지 않았습니다"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "No members found"
msgstr "구성원을 찾을 수 없습니다."
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "No members selected"
msgstr "선택된 구성원이 없습니다."
@@ -6939,6 +6979,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 +7132,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:"
@@ -7399,6 +7442,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "유료"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr "부분 완료"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7654,7 +7702,10 @@ msgstr "이메일을 확인해 주세요."
msgid "Please confirm your email address"
msgstr "이메일 주소를 확인해 주세요."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr "궁금한 점이 있으시면 <0>지원팀</0>에 문의해 주세요."
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "이 작업을 되돌리려면 지원팀에 문의해 주세요."
@@ -7671,8 +7722,6 @@ msgstr "토큰을 나중에 식별할 수 있도록 의미 있는 이름을 입
msgid "Please enter a number"
msgstr "숫자를 입력하세요"
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "올바른 이름을 입력해 주세요."
@@ -7713,13 +7762,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 +7775,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 +7835,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 +8225,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 +8316,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 +8350,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 +8382,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 +8396,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 +8413,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
@@ -8712,10 +8787,18 @@ msgstr "문서 검색..."
msgid "Search folders..."
msgstr "폴더 검색..."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Search groups by name"
msgstr "그룹 이름으로 검색"
#: packages/ui/components/common/language-switcher-dialog.tsx
msgid "Search languages..."
msgstr "언어 검색..."
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Search members by name or email"
msgstr "이름 또는 이메일로 구성원 검색"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
msgid "Secret"
msgstr "시크릿"
@@ -8835,7 +8918,8 @@ msgstr "기본 역할 선택"
msgid "Select direction"
msgstr "방향 선택"
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Select groups"
msgstr "그룹 선택"
@@ -8847,9 +8931,8 @@ msgstr "이 팀에 추가할 구성원 그룹을 선택하세요."
msgid "Select groups to add to this team"
msgstr "이 팀에 추가할 그룹을 선택하세요."
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Select members"
msgstr "구성원 선택"
@@ -8993,6 +9076,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 +9243,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 +9442,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 +9497,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 +9509,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 +9754,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 +10082,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 +10090,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 +10106,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 +10279,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 +10323,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 +10551,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 +10632,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 +10678,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 +10705,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 +10713,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 "현재 이 문서를 복제할 수 없습니다. 다시 시도해 주세요."
@@ -10705,6 +10811,10 @@ msgstr "현재 이 봉투를 배포할 수 없습니다. 다시 시도해 주세
msgid "This envelope could not be resent at this time. Please try again."
msgstr "현재 이 봉투를 다시 보낼 수 없습니다. 다시 시도해 주세요."
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr "현재 요금제에서는 이 기능을 이용할 수 없습니다."
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "이 필드는 수정하거나 삭제할 수 없습니다. 이 템플릿의 다이렉트 링크를 공유하거나 공개 프로필에 추가하면, 누구든지 링크에 접근해 이름과 이메일을 입력하고 본인에게 할당된 필드를 작성할 수 있습니다."
@@ -10772,10 +10882,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 +10993,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 "이 팀에 구성원을 추가하려면 먼저 그들을 조직에 추가해야 합니다."
@@ -11657,10 +11775,6 @@ msgstr "사용자 프로필이 추가되었습니다!"
msgid "User settings"
msgstr "사용자 설정"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "이 이메일을 사용하는 사용자가 이미 있습니다. 다른 이메일 주소를 사용해 주세요."
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11818,6 +11932,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 +12099,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 "그룹을 업데이트하지 못했습니다. 다시 시도해 주세요."
@@ -12200,6 +12320,10 @@ msgstr "토큰을 클립보드에 복사하지 못했습니다. 다시 시도해
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "복구 코드를 클립보드에 복사하지 못했습니다. 다시 시도해 주세요."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr "계정을 생성할 수 없습니다. 이미 계정을 보유하고 있다면 대신 로그인해 주세요."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "계정을 생성하지 못했습니다. 입력하신 정보를 확인한 뒤 다시 시도해 주세요."
@@ -12246,6 +12370,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
@@ -12391,6 +12519,10 @@ msgstr "팀으로 할 수 있는 일:"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "활성화하면, 미리 정의된 순서 대신 서명자가 다음 서명자를 직접 선택할 수 있습니다."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr "활성화하면, 처음으로 SSO를 통해 로그인하는 사용자는 자신의 개인 조직도 함께 생성됩니다."
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "계속을 클릭하면 시스템에서 사용 가능한 첫 번째 인증 수단을 추가하라는 안내가 표시됩니다."
@@ -12479,10 +12611,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 +12628,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 +12679,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 +13009,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 +13463,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 +13530,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 +13626,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 +13643,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 "내 템플릿"
+219 -95
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: nl\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-05-07 05:08\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"
@@ -1540,6 +1542,10 @@ msgstr "Alle organisatieleden toestaan toegang te hebben tot dit team"
msgid "Allow document recipients to reply directly to this email address"
msgstr "Sta documentontvangers toe direct op dit e-mailadres te antwoorden."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr "Persoonlijke organisaties toestaan"
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1599,6 +1605,8 @@ msgstr "Naar elk lid wordt een email met een uitnodiging gestuurd."
msgid "An email with this address already exists."
msgstr "Er bestaat al een e-mailadres met dit adres."
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
#: apps/remix/app/components/forms/avatar-image.tsx
#: apps/remix/app/components/forms/password.tsx
@@ -1690,10 +1698,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 +1937,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 +2001,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 +2033,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 +2307,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 +2340,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 +2405,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 +2781,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 +2813,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 +2889,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 +2903,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 +2941,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 +3331,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 +3436,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 +3463,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 +3481,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 +3836,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 +3961,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 +3991,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 +4008,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 +4127,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 +4205,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 +4300,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)"
@@ -4299,6 +4319,7 @@ msgstr "Niet overdragen (alle documenten verwijderen)"
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4395,10 +4416,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 +4799,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,12 +4925,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "Envelope-ID"
@@ -4963,7 +4982,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 +5683,10 @@ msgstr "Zo werkt het:"
msgid "Hey Im Timur"
msgstr "Hoi, ik ben Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "Hoi {recipientName},"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Hallo {userName},"
@@ -5677,7 +5699,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 +5887,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"
@@ -6316,6 +6338,8 @@ msgstr "Suggesties laden..."
#: apps/remix/app/components/embed/embed-client-loading.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains.$id.tsx
msgid "Loading..."
msgstr "Laden..."
@@ -6568,6 +6592,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"
@@ -6884,10 +6916,18 @@ msgstr "Nog geen mappen."
msgid "No further action is required from you at this time."
msgstr "Er is op dit moment geen verdere actie van jou vereist."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "No groups found"
msgstr "Geen groepen gevonden"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "No License Configured"
msgstr "Geen licentie geconfigureerd"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "No members found"
msgstr "Geen leden gevonden"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "No members selected"
msgstr "Geen leden geselecteerd"
@@ -6939,6 +6979,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 +7132,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:"
@@ -7399,6 +7442,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "Betaald"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr "Gedeeltelijk"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7654,7 +7702,10 @@ 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/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr "Neem contact op met <0>support</0> als je vragen hebt."
#: 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."
@@ -7671,8 +7722,6 @@ msgstr "Voer een betekenisvolle naam in voor je token. Hiermee kun je het later
msgid "Please enter a number"
msgstr "Voer een nummer in"
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "Voer een geldige naam in."
@@ -7713,13 +7762,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 +7775,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 +7835,7 @@ msgstr "Probeer het opnieuw en controleer of je het juiste emailadres hebt in
msgid "Please try again or contact our support."
msgstr "Probeer het opnieuw of neem contact op met onze ondersteuning."
#. placeholder {0}: `'${_(deleteMessage)}'`
#. placeholder {0}: `'${t(deleteMessage)}'`
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please type {0} to confirm"
msgstr "Typ {0} om te bevestigen."
@@ -8184,7 +8225,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 +8316,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 +8350,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 +8382,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 +8396,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 +8413,10 @@ msgstr "Teamemail verwijderen"
msgid "Remove team member"
msgstr "Teamlid verwijderen"
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
msgid "Remove Team Member"
msgstr "Teamlid verwijderen"
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
@@ -8712,10 +8787,18 @@ msgstr "Documenten zoeken..."
msgid "Search folders..."
msgstr "Mappen zoeken..."
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Search groups by name"
msgstr "Zoek groepen op naam"
#: packages/ui/components/common/language-switcher-dialog.tsx
msgid "Search languages..."
msgstr "Talen zoeken..."
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Search members by name or email"
msgstr "Zoek leden op naam of e-mail"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
msgid "Secret"
msgstr "Geheim"
@@ -8835,7 +8918,8 @@ msgstr "Selecteer standaardrol"
msgid "Select direction"
msgstr "Selecteer richting"
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Select groups"
msgstr "Selecteer groepen"
@@ -8847,9 +8931,8 @@ msgstr "Selecteer groepen leden om aan het team toe te voegen."
msgid "Select groups to add to this team"
msgstr "Selecteer groepen om aan dit team toe te voegen"
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Select members"
msgstr "Selecteer leden"
@@ -8993,6 +9076,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 +9243,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 +9442,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 +9497,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 +9509,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 +9754,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 +10082,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 +10090,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 +10106,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 +10279,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 +10323,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 +10551,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 +10632,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 +10678,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 +10705,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 +10713,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."
@@ -10705,6 +10811,10 @@ msgstr "Deze envelop kon op dit moment niet worden verzonden. Probeer het opnieu
msgid "This envelope could not be resent at this time. Please try again."
msgstr "Deze envelop kon op dit moment niet opnieuw worden verzonden. Probeer het opnieuw."
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr "Deze functie is niet beschikbaar in je huidige abonnement."
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "Dit veld kan niet worden gewijzigd of verwijderd. Wanneer je de directe link van deze sjabloon deelt of aan je openbare profiel toevoegt, kan iedereen die toegang heeft zijn naam en e-mailadres invoeren en de aan hem toegewezen velden invullen."
@@ -10772,10 +10882,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 +10993,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."
@@ -11657,10 +11775,6 @@ msgstr "Gebruikersprofielen zijn er!"
msgid "User settings"
msgstr "Gebruikersinstellingen"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "Er bestaat al een gebruiker met dit e-mailadres. Gebruik een ander e-mailadres."
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11818,6 +11932,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 +12099,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."
@@ -12200,6 +12320,10 @@ msgstr "We konden het token niet naar je klembord kopiëren. Probeer het opnieuw
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "We konden je herstelcode niet naar je klembord kopiëren. Probeer het opnieuw."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr "We konden je account niet aanmaken. Als je al een account hebt, probeer dan in te loggen."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "We konden je account niet aanmaken. Controleer de door jou ingevoerde gegevens en probeer het opnieuw."
@@ -12246,6 +12370,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
@@ -12391,6 +12519,10 @@ msgstr "Wat je met teams kunt doen:"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "Wanneer dit is ingeschakeld, kunnen ondertekenaars zelf kiezen wie de volgende in de volgorde moet ondertekenen in plaats van de vooraf gedefinieerde volgorde te volgen."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr "Wanneer ingeschakeld, krijgen gebruikers die zich voor het eerst aanmelden via SSO ook hun eigen persoonlijke organisatie."
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "Wanneer je op Doorgaan klikt, wordt je gevraagd de eerste beschikbare authenticator op je systeem toe te voegen."
@@ -12479,10 +12611,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 +12628,6 @@ msgstr "Je staat op het punt de volgende teamemail te verwijderen uit <0>{
msgid "You are about to give all organisation members access to this team under their organisation role."
msgstr "Je staat op het punt alle organisatieleden toegang te geven tot dit team onder hun organisatierol."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
msgstr "Je staat op het punt <0>\"{documentTitle}\"</0> te verbergen"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "You are about to hide <0>\"{title}\"</0>"
msgstr "Je staat op het punt om <0>\"{title}\"</0> te verbergen"
@@ -12555,6 +12679,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 +13009,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 +13463,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 +13530,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 +13626,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 +13643,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"
File diff suppressed because it is too large Load Diff
+198 -92
View File
@@ -40,10 +40,6 @@ msgstr "“{documentName}” foi assinado"
msgid "“{documentName}” was signed by all signers"
msgstr "“{documentName}” foi assinado por todos os signatários"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" foi excluído com sucesso"
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"{placeholderEmail}\" on behalf of \"Team Name\" has invited you to sign \"example document\"."
msgstr "\"{placeholderEmail}\" em nome de \"Nome da Equipe\" convidou você para assinar \"exemplo de documento\"."
@@ -52,6 +48,10 @@ msgstr "\"{placeholderEmail}\" em nome de \"Nome da Equipe\" convidou você para
msgid "\"{title}\" has been successfully deleted"
msgstr ""
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "\"{title}\" has been successfully hidden"
msgstr ""
#: apps/remix/app/components/forms/document-preferences-form.tsx
msgid "\"Team Name\" has invited you to sign \"example document\"."
msgstr "\"Nome da Equipe\" convidou você para assinar \"exemplo de documento\"."
@@ -296,14 +296,17 @@ msgid "{0}/{1}"
msgstr ""
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Day} other {Days}}"
msgstr ""
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Month} other {Months}}"
msgstr ""
#: packages/ui/components/document/expiration-period-picker.tsx
#: packages/ui/components/document/reminder-settings-picker.tsx
msgid "{amount, plural, one {Week} other {Weeks}}"
msgstr ""
@@ -1138,6 +1141,7 @@ msgstr "Ação"
#: apps/remix/app/components/tables/user-billing-organisations-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx
#: apps/remix/app/routes/_authenticated+/admin+/unsealed-documents._index.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx
@@ -1483,7 +1487,6 @@ msgstr "Todos os domínios de e-mail foram sincronizados com sucesso"
msgid "All Folders"
msgstr "Todas as Pastas"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "All inserted signatures will be voided"
msgstr "Todas as assinaturas inseridas serão anuladas"
@@ -1496,7 +1499,6 @@ msgstr ""
msgid "All recipients have signed. The document is being processed and you will receive an email copy shortly."
msgstr "Todos os destinatários assinaram. O documento está sendo processado e você receberá uma cópia por e-mail em breve."
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
msgid "All recipients will be notified"
@@ -1535,6 +1537,10 @@ msgstr "Permitir que todos os membros da organização acessem esta equipe"
msgid "Allow document recipients to reply directly to this email address"
msgstr "Permitir que os destinatários do documento respondam diretamente a este endereço de e-mail"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr ""
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1594,6 +1600,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 +1693,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 +1932,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 +1996,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 +2028,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 +2302,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 +2335,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 +2400,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 +2776,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 +2808,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 +2884,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 +2898,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 +2936,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 +3326,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 +3431,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 +3458,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 +3476,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 +3831,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 +3956,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 +3986,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 +4003,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 +4122,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 +4200,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 +4295,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)"
@@ -4294,6 +4314,7 @@ msgstr ""
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4390,10 +4411,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 +4794,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,12 +4920,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "ID do Envelope"
@@ -4958,7 +4977,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 +5678,10 @@ msgstr "Veja como funciona:"
msgid "Hey Im Timur"
msgstr "Ei, eu sou o Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr ""
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "Olá {userName},"
@@ -5672,7 +5694,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 +5882,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 +6585,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 +6964,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 +7117,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:"
@@ -7394,6 +7427,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "Pago"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr ""
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7649,7 +7687,10 @@ 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/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr ""
#: 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."
@@ -7666,8 +7707,6 @@ msgstr "Por favor, insira um nome significativo para seu token. Isso ajudará vo
msgid "Please enter a number"
msgstr ""
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "Por favor, insira um nome válido."
@@ -7708,13 +7747,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 +7760,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 +7820,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 +8210,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 +8301,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 +8335,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 +8367,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 +8381,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 +8398,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 +9053,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 +9220,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 +9419,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 +9474,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 +9486,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 +9731,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 +10059,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 +10067,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 +10083,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 +10256,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 +10300,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 +10528,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 +10609,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 +10655,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 +10682,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 +10690,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."
@@ -10700,6 +10788,10 @@ msgstr "Este envelope não pôde ser distribuído neste momento. Por favor, tent
msgid "This envelope could not be resent at this time. Please try again."
msgstr "Este envelope não pôde ser reenviado neste momento. Por favor, tente novamente."
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr ""
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "Este campo não pode ser modificado ou excluído. Quando você compartilha o link direto deste modelo ou o adiciona ao seu perfil público, qualquer pessoa que o acesse pode inserir seu nome e e-mail e preencher os campos atribuídos a ela."
@@ -10767,10 +10859,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 +10970,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 ""
@@ -11652,10 +11752,6 @@ msgstr "Perfis de usuário chegaram!"
msgid "User settings"
msgstr "Configurações do usuário"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "Já existe um usuário com este e-mail. Por favor, use um endereço de e-mail diferente."
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11813,6 +11909,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 +12076,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."
@@ -12195,6 +12297,10 @@ msgstr "Não conseguimos copiar o token para sua área de transferência. Por fa
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "Não conseguimos copiar seu código de recuperação para sua área de transferência. Por favor, tente novamente."
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr ""
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "Não conseguimos criar sua conta. Por favor, revise as informações fornecidas e tente novamente."
@@ -12241,6 +12347,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
@@ -12386,6 +12496,10 @@ msgstr "O que você pode fazer com equipes:"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "Quando ativado, os signatários podem escolher quem deve assinar em seguida na sequência, em vez de seguir a ordem predefinida."
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr ""
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "Ao clicar em continuar, você será solicitado a adicionar o primeiro autenticador disponível em seu sistema."
@@ -12474,10 +12588,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 +12605,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 +12656,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 +12986,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 +13440,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 +13507,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 +13603,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 +13620,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 ""
+220 -96
View File
@@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-04-02 08:21\n"
"PO-Revision-Date: 2026-05-07 05:08\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"
@@ -1540,6 +1542,10 @@ msgstr "允许所有组织成员访问此团队"
msgid "Allow document recipients to reply directly to this email address"
msgstr "允许文档收件人直接回复到此邮箱地址"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "Allow Personal Organisations"
msgstr "允许个人组织"
#: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
#: packages/ui/primitives/document-flow/add-signers.tsx
@@ -1599,6 +1605,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 +1698,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 +1937,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 +2001,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 +2033,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 +2307,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 +2340,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 +2405,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 +2781,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 +2813,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 +2889,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 +2903,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 +2941,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 +3331,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 +3436,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 +3463,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 +3481,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 +3836,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 +3961,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 +3991,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 +4008,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 +4127,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 +4205,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 +4300,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)"
@@ -4299,6 +4319,7 @@ msgstr "不要转移(删除所有文档)"
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
#: apps/remix/app/components/tables/inbox-table.tsx
#: apps/remix/app/components/tables/organisation-billing-invoices-table.tsx
#: apps/remix/app/components/tables/templates-table-action-dropdown.tsx
#: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx
#: packages/email/template-components/template-document-completed.tsx
msgid "Download"
@@ -4395,10 +4416,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 +4799,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,12 +4925,12 @@ 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
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-audit-logs.ts
#: packages/lib/server-only/pdf/render-certificate.ts
#: packages/lib/server-only/pdf/render-certificate.ts
msgid "Envelope ID"
msgstr "信封 ID"
@@ -4963,7 +4982,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 +5683,10 @@ msgstr "操作方式如下:"
msgid "Hey Im Timur"
msgstr "嗨,我是 Timur"
#: packages/email/template-components/template-document-reminder.tsx
msgid "Hi {recipientName},"
msgstr "{recipientName},您好:"
#: packages/email/templates/bulk-send-complete.tsx
msgid "Hi {userName},"
msgstr "您好 {userName},"
@@ -5677,7 +5699,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 +5887,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"
@@ -6316,6 +6338,8 @@ msgstr "正在加载建议…"
#: apps/remix/app/components/embed/embed-client-loading.tsx
#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx
#: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/routes/_authenticated+/admin+/email-domains.$id.tsx
msgid "Loading..."
msgstr "正在加载..."
@@ -6568,6 +6592,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 "加入时间"
@@ -6884,10 +6916,18 @@ msgstr "还没有文件夹。"
msgid "No further action is required from you at this time."
msgstr "目前您无需再执行任何操作。"
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "No groups found"
msgstr "未找到群组"
#: apps/remix/app/components/general/admin-license-card.tsx
msgid "No License Configured"
msgstr "未配置许可证"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "No members found"
msgstr "未找到成员"
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
msgid "No members selected"
msgstr "未选择任何成员"
@@ -6939,6 +6979,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 +7132,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:"
@@ -7399,6 +7442,11 @@ msgctxt "Subscription status"
msgid "Paid"
msgstr "已付费"
#: apps/remix/app/components/dialogs/envelope-download-dialog.tsx
msgctxt "Partially signed document (adjective)"
msgid "Partial"
msgstr "部分签署"
#: apps/remix/app/components/forms/signin.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
@@ -7654,7 +7702,10 @@ msgstr "请确认您的邮箱"
msgid "Please confirm your email address"
msgstr "请确认您的邮箱地址"
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "Please contact <0>support</0> if you have any questions."
msgstr "如果您有任何问题,请联系<0>支持</0>。"
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
msgid "Please contact support if you would like to revert this action."
msgstr "如需撤销此操作,请联系支持。"
@@ -7671,8 +7722,6 @@ msgstr "请输入一个有意义的令牌名称,以便日后识别。"
msgid "Please enter a number"
msgstr "请输入一个数字"
#: apps/remix/app/components/forms/profile.tsx
#: apps/remix/app/components/forms/signup.tsx
#: apps/remix/app/components/general/claim-account.tsx
msgid "Please enter a valid name."
msgstr "请输入有效姓名。"
@@ -7713,13 +7762,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 +7775,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 +7835,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 +8225,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 +8316,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 +8350,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 +8382,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 +8396,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 +8413,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
@@ -8712,10 +8787,18 @@ msgstr "搜索文档..."
msgid "Search folders..."
msgstr "搜索文件夹…"
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Search groups by name"
msgstr "按名称搜索群组"
#: packages/ui/components/common/language-switcher-dialog.tsx
msgid "Search languages..."
msgstr "搜索语言…"
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Search members by name or email"
msgstr "按姓名或邮箱搜索成员"
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
msgid "Secret"
msgstr "密钥"
@@ -8835,7 +8918,8 @@ msgstr "选择默认角色"
msgid "Select direction"
msgstr "选择方向"
#: apps/remix/app/components/dialogs/team-group-create-dialog.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx
msgid "Select groups"
msgstr "选择组"
@@ -8847,9 +8931,8 @@ msgstr "选择要添加到团队的成员组。"
msgid "Select groups to add to this team"
msgstr "选择要添加到此团队的组"
#: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
#: apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx
msgid "Select members"
msgstr "选择成员"
@@ -8993,6 +9076,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 +9243,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 +9442,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 +9497,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 +9509,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 +9754,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 +10082,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 +10090,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 +10106,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 +10279,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 +10323,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 +10551,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 +10632,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 +10678,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 +10705,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 +10713,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 "当前无法复制此文档。请重试。"
@@ -10705,6 +10811,10 @@ msgstr "当前无法分发此信封。请重试。"
msgid "This envelope could not be resent at this time. Please try again."
msgstr "当前无法重新发送此信封。请重试。"
#: apps/remix/app/components/embed/embed-paywall.tsx
msgid "This feature is not available on your current plan"
msgstr "此功能在您当前的方案中不可用"
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them."
msgstr "此字段无法修改或删除。将此模板的直链分享出去或添加到您的公开主页后,任何访问该链接的人都可以输入自己的姓名和邮箱,并填写分配给 TA 的字段。"
@@ -10772,10 +10882,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 +10993,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 "要向此团队添加成员,必须先将他们添加到组织中。"
@@ -11657,10 +11775,6 @@ msgstr "用户资料来了!"
msgid "User settings"
msgstr "用户设置"
#: apps/remix/app/components/forms/signup.tsx
msgid "User with this email already exists. Please use a different email address."
msgstr "使用该邮箱的用户已存在。请使用其他邮箱地址。"
#: apps/remix/app/components/tables/organisation-insights-table.tsx
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
msgid "Users"
@@ -11818,6 +11932,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 +12099,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 "我们无法更新该组。请重试。"
@@ -12200,6 +12320,10 @@ msgstr "无法将令牌复制到剪贴板。请重试。"
msgid "We were unable to copy your recovery code to your clipboard. Please try again."
msgstr "无法将恢复代码复制到剪贴板。请重试。"
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. If you already have an account, try signing in instead."
msgstr "我们无法创建你的账户。如果你已经有账户,请尝试改为登录。"
#: apps/remix/app/components/forms/signup.tsx
msgid "We were unable to create your account. Please review the information you provided and try again."
msgstr "我们未能创建您的账户。请检查您提供的信息后重试。"
@@ -12246,6 +12370,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
@@ -12391,6 +12519,10 @@ msgstr "通过团队您可以完成以下工作:"
msgid "When enabled, signers can choose who should sign next in the sequence instead of following the predefined order."
msgstr "启用后,签署人可以选择下一位签署人,而不是遵循预定义顺序。"
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation."
msgstr "启用后,首次通过 SSO 登录的用户也会获得各自的个人组织。"
#: apps/remix/app/components/dialogs/passkey-create-dialog.tsx
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "点击继续后,系统会提示你添加设备上第一个可用的验证器。"
@@ -12479,10 +12611,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 +12628,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 +12679,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 +13009,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 +13463,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 +13530,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 +13626,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 +13643,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 "您的模板"
+1 -13
View File
@@ -1,13 +1,5 @@
import { z } from 'zod';
/**
* A CSS length value: `0`, or a positive number followed by a length unit.
* Used for the radius field, which is interpolated raw into a `<style>`
* block at render time. Anything outside this shape is a CSS-injection
* vector — DO NOT loosen without re-checking `toNativeCssVars`.
*/
export const CSS_LENGTH_REGEX = /^(0|\d+(\.\d+)?(rem|px|em|%|pt|))$/i;
export const ZCssVarsSchema = z
.object({
background: z.string().optional().describe('Base background color'),
@@ -36,11 +28,7 @@ export const ZCssVarsSchema = z
destructive: z.string().optional().describe('Destructive/danger action color'),
destructiveForeground: z.string().optional().describe('Destructive/danger text color'),
ring: z.string().optional().describe('Focus ring color'),
radius: z
.string()
.regex(CSS_LENGTH_REGEX, 'Must be a CSS length such as 0.5rem, 8px, or 0')
.optional()
.describe('Border radius — must be a CSS length (rem/px/em/%/pt or 0)'),
radius: z.string().optional().describe('Border radius size in REM units'),
warning: z.string().optional().describe('Warning/alert color'),
envelopeEditorBackground: z.string().optional().describe('Envelope editor background color'),
})
-1
View File
@@ -47,7 +47,6 @@ export const ZDocumentSchema = LegacyDocumentSchema.pick({
id: true,
data: true,
initialData: true,
originalMimeType: true,
}).extend({
envelopeItemId: z.string(),
}),
-1
View File
@@ -41,7 +41,6 @@ export const ZTemplateSchema = TemplateSchema.pick({
id: true,
data: true,
initialData: true,
originalMimeType: true,
}).extend({
envelopeItemId: z.string(),
}),
@@ -15,17 +15,11 @@ type File = {
arrayBuffer: () => Promise<ArrayBuffer>;
};
type PutPdfFileOptions = {
initialData?: string;
originalData?: string;
originalMimeType?: string;
};
/**
* Uploads a document file to the appropriate storage location and creates
* a document data record.
*/
export const putPdfFileServerSide = async (file: File, options: PutPdfFileOptions = {}) => {
export const putPdfFileServerSide = async (file: File, initialData?: string) => {
const isEncryptedDocumentsAllowed = false; // Was feature flag.
const arrayBuffer = await file.arrayBuffer();
@@ -46,13 +40,7 @@ export const putPdfFileServerSide = async (file: File, options: PutPdfFileOption
const { type, data } = await putFileServerSide(file);
const createdData = await createDocumentData({
type,
data,
initialData: options.initialData,
originalData: options.originalData,
originalMimeType: options.originalMimeType,
});
const createdData = await createDocumentData({ type, data, initialData });
return {
documentData: createdData,
@@ -60,25 +48,13 @@ export const putPdfFileServerSide = async (file: File, options: PutPdfFileOption
};
};
type PutNormalizedPdfOptions = {
file: File;
originalData?: string;
originalMimeType?: string;
flattenForm?: boolean;
};
/**
* Uploads a pdf file and normalizes it.
*/
export const putNormalizedPdfFileServerSide = async ({
file,
originalData,
originalMimeType,
flattenForm = true,
}: PutNormalizedPdfOptions) => {
export const putNormalizedPdfFileServerSide = async (file: File, options: { flattenForm?: boolean } = {}) => {
const buffer = Buffer.from(await file.arrayBuffer());
const normalized = await normalizePdf(buffer, { flattenForm });
const normalized = await normalizePdf(buffer, options);
const fileName = file.name.endsWith('.pdf') ? file.name : `${file.name}.pdf`;
@@ -91,8 +67,6 @@ export const putNormalizedPdfFileServerSide = async ({
return await createDocumentData({
type: documentData.type,
data: documentData.data,
originalData,
originalMimeType,
});
};
@@ -1,46 +0,0 @@
import type { TCssVarsSchema } from '../types/css-vars';
/**
* Normalise a branding-colours payload coming from a settings form.
*
* The colour-pickers store empty strings for cleared fields, and
* `ZCssVarsSchema.default({})` produces `{}` when the form is submitted
* without any colour overrides. Persisting either as a non-null value would
* silently mask the org's defaults for a team, and produce noisy "this is
* an override of nothing" rows in the database.
*
* This helper:
* - strips keys whose value is `undefined`, `null`, or an empty string
* - returns `null` if the result has no remaining keys
* - leaves all other keys verbatim (validation against ZCssVarsSchema is
* expected to have happened at the request boundary)
*
* `undefined` input means "no change" — the caller should not pass it
* through to Prisma. We pass it through unchanged so handlers can keep their
* existing `=== undefined` branches.
*/
export const normalizeBrandingColors = (
input: TCssVarsSchema | null | undefined,
): TCssVarsSchema | null | undefined => {
if (input === undefined) {
return undefined;
}
if (input === null) {
return null;
}
const cleaned: Record<string, string> = {};
for (const [key, value] of Object.entries(input)) {
if (typeof value === 'string' && value.trim() !== '') {
cleaned[key] = value;
}
}
if (Object.keys(cleaned).length === 0) {
return null;
}
return cleaned as TCssVarsSchema;
};
-2
View File
@@ -124,8 +124,6 @@ export const generateDefaultOrganisationSettings = (): Omit<OrganisationGlobalSe
brandingLogo: '',
brandingUrl: '',
brandingCompanyDetails: '',
brandingColors: null,
brandingCss: '',
emailId: null,
emailReplyTo: null,
@@ -1,436 +0,0 @@
import { describe, expect, it } from 'vitest';
import { sanitizeBrandingCss } from './sanitize-branding-css';
const normalize = (css: string) => css.replace(/\s+/g, ' ').trim();
/**
* The sanitiser does NOT scope selectors. Scoping is applied at render time
* by wrapping the entire sanitised output in `.documenso-branded { ... }` via
* native CSS nesting (see `RecipientBranding`). These tests assert that
* selectors are preserved verbatim and only validated.
*/
describe('sanitizeBrandingCss', () => {
describe('empty input', () => {
it('returns empty output for an empty string', () => {
const result = sanitizeBrandingCss('');
expect(result.css).toBe('');
expect(result.warnings).toEqual([]);
});
it('returns empty output for whitespace-only input', () => {
const result = sanitizeBrandingCss(' \n\t \n');
expect(result.css).toBe('');
expect(result.warnings).toEqual([]);
});
});
describe('selector preservation', () => {
it('preserves a bare class selector', () => {
const result = sanitizeBrandingCss('.foo { color: red; }');
expect(normalize(result.css)).toBe('.foo { color: red; }');
expect(result.warnings).toEqual([]);
});
it('preserves a tag selector', () => {
const result = sanitizeBrandingCss('h1 { color: red; }');
expect(normalize(result.css)).toBe('h1 { color: red; }');
expect(result.warnings).toEqual([]);
});
it('preserves combinators', () => {
const result = sanitizeBrandingCss('.a > .b + .c ~ .d { color: red; }');
expect(normalize(result.css)).toBe('.a > .b + .c ~ .d { color: red; }');
expect(result.warnings).toEqual([]);
});
it('preserves comma-separated selectors', () => {
const result = sanitizeBrandingCss('.a, .b { color: red; }');
expect(normalize(result.css)).toBe('.a, .b { color: red; }');
expect(result.warnings).toEqual([]);
});
it('preserves body/html/:root verbatim (will no-op once nested at render)', () => {
const result = sanitizeBrandingCss('body { background: black; }');
// Selector is left as-is. At render time this becomes
// `.documenso-branded body { ... }`, which won't match anything since
// <body> is an ancestor of the wrapper. Documented tradeoff.
expect(normalize(result.css)).toBe('body { background: black; }');
expect(result.warnings).toEqual([]);
});
});
describe('pseudo-elements', () => {
it('drops a rule containing ::before', () => {
const result = sanitizeBrandingCss(".foo::before { content: 'x'; }");
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('selector');
});
it('drops a rule containing ::after', () => {
const result = sanitizeBrandingCss(".foo::after { content: 'x'; }");
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
});
it('drops a rule containing ::backdrop', () => {
const result = sanitizeBrandingCss('.foo::backdrop { color: red; }');
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
});
it('drops a rule containing ::marker', () => {
const result = sanitizeBrandingCss('li::marker { color: red; }');
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
});
it('drops a rule using legacy single-colon :before', () => {
const result = sanitizeBrandingCss(".foo:before { content: 'x'; }");
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('selector');
});
it('drops a rule using legacy single-colon :after', () => {
const result = sanitizeBrandingCss(".foo:after { content: 'x'; }");
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
});
it('keeps ::placeholder verbatim', () => {
const result = sanitizeBrandingCss('input::placeholder { color: gray; }');
expect(normalize(result.css)).toBe('input::placeholder { color: gray; }');
expect(result.warnings).toEqual([]);
});
it('keeps ::selection verbatim', () => {
const result = sanitizeBrandingCss('p::selection { background: yellow; }');
expect(normalize(result.css)).toBe('p::selection { background: yellow; }');
expect(result.warnings).toEqual([]);
});
});
describe('universal selector', () => {
it('drops a bare * selector rule', () => {
const result = sanitizeBrandingCss('* { color: red; }');
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('selector');
});
it('drops a rule with * combined with descendant', () => {
const result = sanitizeBrandingCss('* .x { color: red; }');
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
});
it('keeps attribute selectors that include * inside', () => {
const result = sanitizeBrandingCss('[class*="foo"] { color: red; }');
expect(normalize(result.css)).toBe('[class*="foo"] { color: red; }');
expect(result.warnings).toEqual([]);
});
});
describe('blocked properties', () => {
const blockedProperties = [
'display',
'visibility',
'opacity',
'pointer-events',
'position',
'inset',
'top',
'right',
'bottom',
'left',
'z-index',
'transform',
'clip',
'clip-path',
'mask',
'mask-image',
'content',
'width',
'height',
'min-width',
'min-height',
'max-width',
'max-height',
'overflow',
'overflow-x',
'overflow-y',
'font-size',
'letter-spacing',
'word-spacing',
'line-height',
'text-indent',
];
for (const prop of blockedProperties) {
it(`strips the "${prop}" property`, () => {
const result = sanitizeBrandingCss(`.x { ${prop}: 10px; color: red; }`);
expect(result.css).not.toContain(`${prop}:`);
expect(result.css).toContain('color: red');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('property');
expect(result.warnings[0].detail).toContain(prop);
});
}
it('is case-insensitive on property names', () => {
const result = sanitizeBrandingCss('.x { DISPLAY: none; color: red; }');
expect(result.css).not.toMatch(/display/i);
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('property');
});
const allowedProperties: Array<[string, string]> = [
['color', 'red'],
['background', '#fff'],
['border', '1px solid black'],
['border-radius', '4px'],
['font-family', 'sans-serif'],
['font-weight', '600'],
];
for (const [prop, value] of allowedProperties) {
it(`keeps the "${prop}" property`, () => {
const result = sanitizeBrandingCss(`.x { ${prop}: ${value}; }`);
expect(result.css).toContain(`${prop}: ${value}`);
expect(result.warnings).toEqual([]);
});
}
});
describe('blocked values', () => {
it('drops a declaration containing url(', () => {
const result = sanitizeBrandingCss('.x { background: url(http://evil); }');
expect(result.css).not.toContain('url(');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('value');
});
it('drops a declaration containing expression(', () => {
const result = sanitizeBrandingCss('.x { background: expression(alert(1)); }');
expect(result.css).not.toContain('expression(');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('value');
});
it('drops a declaration containing javascript: in a quoted value', () => {
// PostCSS would throw on bare `javascript:alert(1)` (looks like a
// malformed selector inside a declaration). Use a quoted value to
// exercise the substring match cleanly.
const result = sanitizeBrandingCss('.x { font-family: "javascript:alert"; }');
expect(result.css).not.toContain('javascript:');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('value');
});
});
describe('!important stripping', () => {
it('strips !important from a retained declaration', () => {
const result = sanitizeBrandingCss('.x { color: red !important; }');
expect(result.css).not.toContain('!important');
expect(result.css).toContain('color: red');
expect(result.warnings).toEqual([]);
});
});
describe('at-rules', () => {
it('drops @import', () => {
const result = sanitizeBrandingCss('@import url("https://evil.example/x.css");');
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('at-rule');
});
it('drops @font-face', () => {
const result = sanitizeBrandingCss('@font-face { font-family: "X"; src: url("x.woff2"); }');
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('at-rule');
});
it('drops @keyframes', () => {
const result = sanitizeBrandingCss('@keyframes spin { to { transform: rotate(360deg); } }');
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('at-rule');
});
it('drops @supports', () => {
const result = sanitizeBrandingCss('@supports (display: grid) { .x { color: red; } }');
expect(result.css.trim()).toBe('');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('at-rule');
});
it('keeps @media with min-width and preserves inner selectors verbatim', () => {
const result = sanitizeBrandingCss('@media (min-width: 600px) { .x { color: red; } }');
expect(normalize(result.css)).toBe('@media (min-width: 600px) { .x { color: red; } }');
expect(result.warnings).toEqual([]);
});
it('keeps @media with prefers-color-scheme and preserves body inside', () => {
const result = sanitizeBrandingCss('@media (prefers-color-scheme: dark) { body { background: black; } }');
expect(normalize(result.css)).toBe('@media (prefers-color-scheme: dark) { body { background: black; } }');
expect(result.warnings).toEqual([]);
});
it('strips blocked properties inside @media', () => {
const result = sanitizeBrandingCss('@media (min-width: 600px) { .x { display: none; color: red; } }');
expect(result.css).not.toContain('display');
expect(result.css).toContain('color: red');
expect(result.warnings).toHaveLength(1);
expect(result.warnings[0].kind).toBe('property');
});
});
describe('combined input', () => {
it('keeps valid rules verbatim and reports each drop', () => {
const input = `
.ok { color: red !important; }
.bad-prop { display: none; background: blue; }
.bad-pseudo::before { content: 'x'; }
* { color: red; }
@import "evil.css";
body { background: black; }
@media (min-width: 600px) {
.responsive { color: green; }
}
`;
const result = sanitizeBrandingCss(input);
// Valid bits present, unchanged.
expect(result.css).toContain('.ok');
expect(result.css).toContain('color: red');
expect(result.css).toContain('.bad-prop');
expect(result.css).toContain('background: blue');
expect(result.css).toContain('body { background: black');
expect(result.css).toContain('@media (min-width: 600px)');
expect(result.css).toContain('.responsive');
// Invalid bits gone.
expect(result.css).not.toContain('!important');
expect(result.css).not.toContain('display');
expect(result.css).not.toContain('::before');
expect(result.css).not.toContain('@import');
// Warning kinds.
const kinds = result.warnings.map((w) => w.kind).sort();
expect(kinds).toEqual(['at-rule', 'property', 'selector', 'selector'].sort());
});
});
describe('style-close-tag defence', () => {
// The sanitised output is inlined into a `<style>` element via SSR. The
// browser's HTML parser terminates the element on a literal `</style`
// anywhere in the content. PostCSS's serializer normally escapes `<` to
// `\3c` whenever it would form `</...`, so the literal sequence should
// never reach the output for any of these inputs. These tests pin that
// invariant.
it('escapes </style> inside a string value', () => {
const result = sanitizeBrandingCss('.x { font-family: "</style><img src=x onerror=alert(1)>"; }');
expect(result.css.toLowerCase()).not.toContain('</style');
// Whatever else happens, the canonical close-tag bytes must not appear.
});
it('escapes </style> inside a CSS comment', () => {
const result = sanitizeBrandingCss('.x { color: red; /* </style><script>alert(1)</script> */ }');
expect(result.css.toLowerCase()).not.toContain('</style');
});
it('escapes </style> inside an at-rule params block', () => {
const result = sanitizeBrandingCss(
'@media screen and (foo: bar)</style><script>x()</script> { .x { color: red; } }',
);
expect(result.css.toLowerCase()).not.toContain('</style');
});
it('escapes mixed-case </StYlE> in a value', () => {
const result = sanitizeBrandingCss('.x { font-family: "</StYlE>foo"; }');
expect(result.css.toLowerCase()).not.toContain('</style');
});
it('escapes </style> in an attribute selector value', () => {
const result = sanitizeBrandingCss('[data-x="</style><script>alert(1)</script>"] { color: red; }');
expect(result.css.toLowerCase()).not.toContain('</style');
});
it('preserves benign < not followed by /', () => {
// `<script>` (no slash) is not a tag close; PostCSS leaves it as text
// and the HTML parser treats it as text inside <style> rawtext mode.
const result = sanitizeBrandingCss('.x { font-family: "<script>alert(1)</script>"; }');
// The output keeps the literal `<script>` (harmless) but escapes the
// `</script>` end tag's `<` for the same reason it'd escape `</style>`.
expect(result.css).toContain('<script>');
expect(result.css.toLowerCase()).not.toContain('</style');
});
});
describe('malformed CSS', () => {
// PostCSS is forgiving; an empty value parses without throwing.
it('handles a declaration with an empty value gracefully', () => {
const result = sanitizeBrandingCss('.x { color: }');
expect(result.warnings.filter((w) => w.kind === 'parse-error')).toEqual([]);
expect(result.css).toContain('.x');
});
it('reports a parse-error for clearly broken CSS', () => {
// Unclosed brace.
const result = sanitizeBrandingCss('.x { color: red');
// PostCSS may or may not throw on this; if it does, we get a
// parse-error warning. If it tolerates it, the rule is sanitized.
if (result.css === '') {
expect(result.warnings.some((w) => w.kind === 'parse-error')).toBe(true);
} else {
expect(result.css).toContain('.x');
}
});
});
});
-323
View File
@@ -1,323 +0,0 @@
import type { AtRule, Container, Declaration, Rule } from 'postcss';
import postcss from 'postcss';
import selectorParser from 'postcss-selector-parser';
import { z } from 'zod';
export const ZSanitizeBrandingCssWarningSchema = z.object({
kind: z.enum(['selector', 'property', 'value', 'at-rule', 'parse-error']),
detail: z.string(),
line: z.number().optional(),
});
export type SanitizeBrandingCssWarning = z.infer<typeof ZSanitizeBrandingCssWarningSchema>;
export type SanitizeBrandingCssResult = {
css: string;
warnings: SanitizeBrandingCssWarning[];
};
/**
* The class name the sanitised CSS will be wrapped in at render time using
* CSS nesting (`.documenso-branded { <user css> }`). The sanitiser itself
* does NOT prefix selectors — the wrapper is applied by `RecipientBranding`
* on every render so we keep the user's original CSS intact in the database.
*/
export const SANITIZE_BRANDING_SCOPE_CLASS = 'documenso-branded';
const BLOCKED_PROPERTIES = new Set([
'display',
'visibility',
'opacity',
'pointer-events',
'position',
'inset',
'top',
'right',
'bottom',
'left',
'z-index',
'transform',
'clip',
'clip-path',
'mask',
'mask-image',
'content',
'width',
'height',
'min-width',
'min-height',
'max-width',
'max-height',
'overflow',
'overflow-x',
'overflow-y',
'font-size',
'letter-spacing',
'word-spacing',
'line-height',
'text-indent',
]);
const BLOCKED_VALUE_SUBSTRINGS = ['url(', 'expression(', '@import', 'javascript:'];
const BLOCKED_PSEUDO_ELEMENTS = new Set([
'::before',
'::after',
'::backdrop',
'::marker',
// Single-colon legacy forms.
':before',
':after',
]);
const BLOCKED_AT_RULES = new Set([
'import',
'font-face',
'keyframes',
'charset',
'namespace',
'supports',
'page',
'document',
'viewport',
]);
type SelectorValidationResult = { kind: 'ok' } | { kind: 'drop'; reason: string };
/**
* Validate a selector for the rules we care about, but DO NOT rewrite it.
* The sanitised output is later wrapped in `.documenso-branded { ... }` via
* native CSS nesting by `RecipientBranding`, so scoping happens at render.
*/
const validateSelector = (rawSelector: string): SelectorValidationResult => {
let dropReason: string | null = null;
const transform = selectorParser((selectors) => {
selectors.each((selector) => {
selector.walk((node) => {
// Pseudo-element check (works at any depth — even nested pseudos like
// `:is(::before)` should be rejected).
if (node.type === 'pseudo') {
const value = node.value;
if (BLOCKED_PSEUDO_ELEMENTS.has(value)) {
dropReason = `pseudo-element "${value}" not allowed`;
}
}
});
if (dropReason !== null) {
return;
}
// Universal selector check — only when it is a direct child of the
// top-level compound (i.e. `* { ... }` or `* .foo { ... }`).
// Universal nodes nested inside attribute selectors (`[class*="x"]`)
// are a different node type and won't appear here.
selector.each((node) => {
if (node.type === 'universal') {
dropReason = 'universal "*" selector not allowed';
}
});
});
});
try {
// We don't keep the result — we only care about parsing and walking
// to populate dropReason.
transform.processSync(rawSelector);
} catch (error) {
return {
kind: 'drop',
reason: error instanceof Error ? error.message : 'failed to parse selector',
};
}
if (dropReason !== null) {
return { kind: 'drop', reason: dropReason };
}
return { kind: 'ok' };
};
const valueIsBlocked = (rawValue: string): boolean => {
const lowered = rawValue.toLowerCase();
return BLOCKED_VALUE_SUBSTRINGS.some((needle) => lowered.includes(needle));
};
const sanitizeDeclarations = (container: Container, warnings: SanitizeBrandingCssWarning[]): void => {
const toRemove: Declaration[] = [];
container.each((node) => {
if (node.type !== 'decl') {
return;
}
const decl = node;
const propLower = decl.prop.toLowerCase();
if (BLOCKED_PROPERTIES.has(propLower)) {
warnings.push({
kind: 'property',
detail: `property "${decl.prop}" is not allowed`,
line: decl.source?.start?.line,
});
toRemove.push(decl);
return;
}
if (valueIsBlocked(decl.value)) {
warnings.push({
kind: 'value',
detail: `value of "${decl.prop}" contains a disallowed token`,
line: decl.source?.start?.line,
});
toRemove.push(decl);
return;
}
if (decl.important) {
decl.important = false;
}
});
for (const decl of toRemove) {
decl.remove();
}
};
const sanitizeRule = (rule: Rule, warnings: SanitizeBrandingCssWarning[]): void => {
const line = rule.source?.start?.line;
const validation = validateSelector(rule.selector);
if (validation.kind === 'drop') {
warnings.push({ kind: 'selector', detail: validation.reason, line });
rule.remove();
return;
}
// Selector is left as-is. Scoping is applied at render time by wrapping
// the entire sanitised CSS in `.documenso-branded { ... }` (CSS nesting).
sanitizeDeclarations(rule, warnings);
// If the rule has no declarations left, leave the empty rule in place — the
// output is still valid CSS and the user can see what happened. (Removing
// it would also be acceptable; we keep it to make warnings easier to map.)
};
const sanitizeAtRule = (atRule: AtRule, warnings: SanitizeBrandingCssWarning[]): void => {
const name = atRule.name.toLowerCase();
const line = atRule.source?.start?.line;
if (BLOCKED_AT_RULES.has(name)) {
warnings.push({
kind: 'at-rule',
detail: `at-rule "@${atRule.name}" is not allowed`,
line,
});
atRule.remove();
return;
}
if (name !== 'media') {
warnings.push({
kind: 'at-rule',
detail: `at-rule "@${atRule.name}" is not allowed`,
line,
});
atRule.remove();
return;
}
// Recurse into @media children.
const children = atRule.nodes ? [...atRule.nodes] : [];
for (const child of children) {
if (child.type === 'rule') {
sanitizeRule(child, warnings);
} else if (child.type === 'atrule') {
sanitizeAtRule(child, warnings);
}
// Comments and stray declarations inside @media are left alone /
// declarations directly under @media are invalid CSS anyway.
}
};
/**
* Defence in depth against `<style>` element breakout.
*
* The sanitised CSS is inlined into a `<style>` element via SSR
* `dangerouslySetInnerHTML`. The browser's HTML parser (in RAWTEXT mode for
* `<style>` content) terminates the element on a literal `</style` —
* regardless of whether it appears inside a CSS string, comment, or at-rule
* params. PostCSS's serializer escapes `<` to `\3c` whenever it would form
* `</...`, which means a normal round-trip is already safe.
*
* That escape is implicit in PostCSS, not enforced by our own logic. If a
* future PostCSS version, plugin, or alternative serializer regresses, we
* still want the output to be safe to inline. This regex is the explicit
* tripwire — case-insensitive `</style` anywhere in the final output is a
* hard fail.
*/
const STYLE_CLOSE_TAG_REGEX = /<\s*\/\s*style/i;
export const sanitizeBrandingCss = (input: string): SanitizeBrandingCssResult => {
const warnings: SanitizeBrandingCssWarning[] = [];
if (input.trim() === '') {
return { css: '', warnings };
}
let root;
try {
root = postcss.parse(input);
} catch (error) {
return {
css: '',
warnings: [
{
kind: 'parse-error',
detail: error instanceof Error ? error.message : 'failed to parse CSS',
},
],
};
}
// Iterate over a snapshot of top-level children so removal during the loop
// is safe.
const topLevelChildren = root.nodes ? [...root.nodes] : [];
for (const node of topLevelChildren) {
if (node.type === 'rule') {
sanitizeRule(node, warnings);
} else if (node.type === 'atrule') {
sanitizeAtRule(node, warnings);
}
// Top-level decls / comments are left as-is.
}
const output = root.toString();
if (STYLE_CLOSE_TAG_REGEX.test(output)) {
return {
css: '',
warnings: [
...warnings,
{
kind: 'parse-error',
detail: 'output contained a literal </style sequence and was rejected',
},
],
};
}
return { css: output, warnings };
};
-2
View File
@@ -191,8 +191,6 @@ export const generateDefaultTeamSettings = (): Omit<TeamGlobalSettings, 'id' | '
brandingLogo: null,
brandingUrl: null,
brandingCompanyDetails: null,
brandingColors: null,
brandingCss: null,
emailDocumentSettings: null,
emailId: null,
@@ -1,2 +0,0 @@
-- AlterTable
ALTER TABLE "DocumentData" ADD COLUMN "originalMimeType" TEXT;
@@ -1,2 +0,0 @@
-- AlterTable
ALTER TABLE "DocumentData" ADD COLUMN "originalData" TEXT;
@@ -1,7 +0,0 @@
-- AlterTable
ALTER TABLE "OrganisationGlobalSettings" ADD COLUMN "brandingColors" JSONB,
ADD COLUMN "brandingCss" TEXT NOT NULL DEFAULT '';
-- AlterTable
ALTER TABLE "TeamGlobalSettings" ADD COLUMN "brandingColors" JSONB,
ADD COLUMN "brandingCss" TEXT;
+7 -13
View File
@@ -495,13 +495,11 @@ enum DocumentSigningOrder {
}
model DocumentData {
id String @id @default(cuid())
type DocumentDataType
data String
initialData String
originalData String?
originalMimeType String?
envelopeItem EnvelopeItem?
id String @id @default(cuid())
type DocumentDataType
data String
initialData String
envelopeItem EnvelopeItem?
}
enum DocumentDistributionMethod {
@@ -833,7 +831,7 @@ enum OrganisationMemberInviteStatus {
DECLINED
}
/// @zod.import(["import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';", "import { ZDefaultRecipientsSchema } from '@documenso/lib/types/default-recipients';", "import { ZEnvelopeExpirationPeriod as ZEnvelopeExpirationPeriodSchema } from '@documenso/lib/constants/envelope-expiration';", "import { ZEnvelopeReminderSettings as ZEnvelopeReminderSettingsSchema } from '@documenso/lib/constants/envelope-reminder';", "import { ZCssVarsSchema } from '@documenso/lib/types/css-vars';"])
/// @zod.import(["import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';", "import { ZDefaultRecipientsSchema } from '@documenso/lib/types/default-recipients';", "import { ZEnvelopeExpirationPeriod as ZEnvelopeExpirationPeriodSchema } from '@documenso/lib/constants/envelope-expiration';", "import { ZEnvelopeReminderSettings as ZEnvelopeReminderSettingsSchema } from '@documenso/lib/constants/envelope-reminder';"])
model OrganisationGlobalSettings {
id String @id
organisation Organisation?
@@ -864,8 +862,6 @@ model OrganisationGlobalSettings {
brandingLogo String @default("")
brandingUrl String @default("")
brandingCompanyDetails String @default("")
brandingColors Json? /// [TCssVarsSchema] @zod.custom.use(ZCssVarsSchema)
brandingCss String @default("")
envelopeExpirationPeriod Json? /// [EnvelopeExpirationPeriod] @zod.custom.use(ZEnvelopeExpirationPeriodSchema)
@@ -875,7 +871,7 @@ model OrganisationGlobalSettings {
aiFeaturesEnabled Boolean @default(false)
}
/// @zod.import(["import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';", "import { ZDefaultRecipientsSchema } from '@documenso/lib/types/default-recipients';", "import { ZEnvelopeExpirationPeriod as ZEnvelopeExpirationPeriodSchema } from '@documenso/lib/constants/envelope-expiration';", "import { ZEnvelopeReminderSettings as ZEnvelopeReminderSettingsSchema } from '@documenso/lib/constants/envelope-reminder';", "import { ZCssVarsSchema } from '@documenso/lib/types/css-vars';"])
/// @zod.import(["import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';", "import { ZDefaultRecipientsSchema } from '@documenso/lib/types/default-recipients';", "import { ZEnvelopeExpirationPeriod as ZEnvelopeExpirationPeriodSchema } from '@documenso/lib/constants/envelope-expiration';", "import { ZEnvelopeReminderSettings as ZEnvelopeReminderSettingsSchema } from '@documenso/lib/constants/envelope-reminder';"])
model TeamGlobalSettings {
id String @id
team Team?
@@ -907,8 +903,6 @@ model TeamGlobalSettings {
brandingLogo String?
brandingUrl String?
brandingCompanyDetails String?
brandingColors Json? /// [TCssVarsSchema] @zod.custom.use(ZCssVarsSchema)
brandingCss String?
envelopeExpirationPeriod Json? /// [EnvelopeExpirationPeriod] @zod.custom.use(ZEnvelopeExpirationPeriodSchema)
@@ -1,9 +1,8 @@
import { getServerLimits } from '@documenso/ee/server-only/limits/server';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { createEnvelope } from '@documenso/lib/server-only/envelope/create-envelope';
import { convertToPdfIfNeeded } from '@documenso/lib/server-only/file-conversion/convert-to-pdf';
import { insertFormValuesInPdf } from '@documenso/lib/server-only/pdf/insert-form-values-in-pdf';
import { putFileServerSide, putNormalizedPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server';
import { putNormalizedPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server';
import { mapSecondaryIdToDocumentId } from '@documenso/lib/utils/envelope';
import { EnvelopeType } from '@prisma/client';
@@ -36,9 +35,7 @@ export const createDocumentRoute = authenticatedProcedure
attachments,
} = payload;
const { pdfBuffer, originalBuffer, originalMimeType } = await convertToPdfIfNeeded(file);
let pdf = pdfBuffer;
let pdf = Buffer.from(await file.arrayBuffer());
if (formValues) {
// eslint-disable-next-line require-atomic-updates
@@ -48,24 +45,10 @@ export const createDocumentRoute = authenticatedProcedure
});
}
let originalData: string | undefined;
if (originalBuffer) {
const stored = await putFileServerSide({
name: `original-${file.name}`,
type: originalMimeType,
arrayBuffer: async () => Promise.resolve(originalBuffer),
});
originalData = stored.data;
}
const { id: documentDataId } = await putNormalizedPdfFileServerSide({
file: {
name: file.name,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(pdf),
},
originalData,
originalMimeType,
name: file.name,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(pdf),
});
ctx.logger.info({
@@ -17,7 +17,6 @@ export const ZGetMultiSignDocumentResponseSchema = ZDocumentLiteSchema.extend({
id: true,
data: true,
initialData: true,
originalMimeType: true,
}),
documentMeta: DocumentMetaSchema.pick({
signingOrder: true,
@@ -1,11 +1,10 @@
import { getServerLimits } from '@documenso/ee/server-only/limits/server';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { createEnvelope } from '@documenso/lib/server-only/envelope/create-envelope';
import { convertToPdfIfNeeded } from '@documenso/lib/server-only/file-conversion/convert-to-pdf';
import { extractPdfPlaceholders } from '@documenso/lib/server-only/pdf/auto-place-fields';
import { normalizePdf } from '@documenso/lib/server-only/pdf/normalize-pdf';
import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { putFileServerSide, putPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server';
import { putPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server';
import { EnvelopeType } from '@prisma/client';
import { insertFormValuesInPdf } from '../../../lib/server-only/pdf/insert-form-values-in-pdf';
@@ -97,12 +96,17 @@ export const createEnvelopeRouteCaller = async ({
});
}
// For each file: convert to PDF if needed, normalize, extract & clean placeholders, then upload.
if (files.some((file) => !file.type.startsWith('application/pdf'))) {
throw new AppError('INVALID_DOCUMENT_FILE', {
message: 'You cannot upload non-PDF files',
statusCode: 400,
});
}
// For each file: normalize, extract & clean placeholders, then upload.
const envelopeItems = await Promise.all(
files.map(async (file) => {
const { pdfBuffer, originalBuffer, originalMimeType } = await convertToPdfIfNeeded(file);
let pdf = pdfBuffer;
let pdf = Buffer.from(await file.arrayBuffer());
if (formValues) {
// eslint-disable-next-line require-atomic-updates
@@ -119,27 +123,11 @@ export const createEnvelopeRouteCaller = async ({
// Todo: Embeds - Might need to add this for client-side embeds in the future.
const { cleanedPdf, placeholders } = await extractPdfPlaceholders(normalized);
let originalData: string | undefined;
if (originalBuffer) {
const stored = await putFileServerSide({
name: `original-${file.name}`,
type: originalMimeType,
arrayBuffer: async () => Promise.resolve(originalBuffer),
});
originalData = stored.data;
}
const { documentData } = await putPdfFileServerSide(
{
name: file.name,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(cleanedPdf),
},
{
originalData,
originalMimeType: originalBuffer ? originalMimeType : undefined,
},
);
const { documentData } = await putPdfFileServerSide({
name: file.name,
type: 'application/pdf',
arrayBuffer: async () => Promise.resolve(cleanedPdf),
});
return {
title: file.name,
@@ -18,7 +18,6 @@ export const ZGetEnvelopeItemsResponseSchema = z.object({
id: true,
data: true,
initialData: true,
originalMimeType: true,
}),
})
.array(),
@@ -74,8 +74,7 @@ export const useEnvelopeRoute = authenticatedProcedure
const uploadedFiles = await Promise.all(
filesToUpload.map(async (file) => {
// We disable flattening here since `createDocumentFromTemplate` will handle it.
const { id: documentDataId } = await putNormalizedPdfFileServerSide({
file,
const { id: documentDataId } = await putNormalizedPdfFileServerSide(file, {
flattenForm: false,
});
@@ -1,8 +1,6 @@
import { ORGANISATION_MEMBER_ROLE_PERMISSIONS_MAP } from '@documenso/lib/constants/organisations';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { normalizeBrandingColors } from '@documenso/lib/utils/normalize-branding-colors';
import { buildOrganisationWhereQuery } from '@documenso/lib/utils/organisations';
import { type SanitizeBrandingCssWarning, sanitizeBrandingCss } from '@documenso/lib/utils/sanitize-branding-css';
import { prisma } from '@documenso/prisma';
import { OrganisationType, Prisma } from '@prisma/client';
@@ -47,8 +45,6 @@ export const updateOrganisationSettingsRoute = authenticatedProcedure
brandingLogo,
brandingUrl,
brandingCompanyDetails,
brandingColors,
brandingCss,
// Email related settings.
emailId,
@@ -131,24 +127,6 @@ export const updateOrganisationSettingsRoute = authenticatedProcedure
});
}
// Sanitize custom branding CSS at write time so we can store the safe
// result and skip per-render sanitisation. Warnings are returned to the
// UI so the user can see what was dropped.
let cssWarnings: SanitizeBrandingCssWarning[] | undefined;
let sanitizedBrandingCss: string | undefined;
if (brandingCss !== undefined) {
const result = sanitizeBrandingCss(brandingCss);
sanitizedBrandingCss = result.css;
cssWarnings = result.warnings;
}
// Strip empty-string colour values; collapse to `null` when the payload
// contains no overrides. Keeps the stored row clean and avoids storing
// `{}` as a real "override of nothing" (matters more for teams, but the
// org row stays tidy this way too).
const normalizedBrandingColors = normalizeBrandingColors(brandingColors);
await prisma.organisation.update({
where: {
id: organisationId,
@@ -177,8 +155,6 @@ export const updateOrganisationSettingsRoute = authenticatedProcedure
brandingLogo,
brandingUrl,
brandingCompanyDetails,
brandingColors: normalizedBrandingColors === null ? Prisma.DbNull : normalizedBrandingColors,
brandingCss: sanitizedBrandingCss,
// Email related settings.
emailId,
@@ -192,8 +168,4 @@ export const updateOrganisationSettingsRoute = authenticatedProcedure
},
},
});
return {
cssWarnings: cssWarnings && cssWarnings.length > 0 ? cssWarnings : undefined,
};
});
@@ -1,13 +1,10 @@
import { BRANDING_CSS_MAX_LENGTH } from '@documenso/lib/constants/branding';
import { ZEnvelopeExpirationPeriod } from '@documenso/lib/constants/envelope-expiration';
import { ZEnvelopeReminderSettings } from '@documenso/lib/constants/envelope-reminder';
import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
import { ZCssVarsSchema } from '@documenso/lib/types/css-vars';
import { ZDefaultRecipientsSchema } from '@documenso/lib/types/default-recipients';
import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
import { ZDocumentMetaDateFormatSchema, ZDocumentMetaTimezoneSchema } from '@documenso/lib/types/document-meta';
import { DocumentVisibility } from '@documenso/lib/types/document-visibility';
import { ZSanitizeBrandingCssWarningSchema } from '@documenso/lib/utils/sanitize-branding-css';
import { zEmail } from '@documenso/lib/utils/zod';
import { z } from 'zod';
@@ -35,8 +32,6 @@ export const ZUpdateOrganisationSettingsRequestSchema = z.object({
brandingLogo: z.string().optional(),
brandingUrl: z.string().optional(),
brandingCompanyDetails: z.string().optional(),
brandingColors: ZCssVarsSchema.nullish(),
brandingCss: z.string().max(BRANDING_CSS_MAX_LENGTH).optional(),
// Email related settings.
emailId: z.string().nullish(),
@@ -49,6 +44,4 @@ export const ZUpdateOrganisationSettingsRequestSchema = z.object({
}),
});
export const ZUpdateOrganisationSettingsResponseSchema = z.object({
cssWarnings: z.array(ZSanitizeBrandingCssWarningSchema).optional(),
});
export const ZUpdateOrganisationSettingsResponseSchema = z.void();
@@ -1,9 +1,7 @@
import { ORGANISATION_MEMBER_ROLE_PERMISSIONS_MAP } from '@documenso/lib/constants/organisations';
import { TEAM_MEMBER_ROLE_PERMISSIONS_MAP } from '@documenso/lib/constants/teams';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { normalizeBrandingColors } from '@documenso/lib/utils/normalize-branding-colors';
import { buildOrganisationWhereQuery } from '@documenso/lib/utils/organisations';
import { type SanitizeBrandingCssWarning, sanitizeBrandingCss } from '@documenso/lib/utils/sanitize-branding-css';
import { buildTeamWhereQuery } from '@documenso/lib/utils/teams';
import { prisma } from '@documenso/prisma';
import { OrganisationType, Prisma } from '@prisma/client';
@@ -45,8 +43,6 @@ export const updateTeamSettingsRoute = authenticatedProcedure
brandingLogo,
brandingUrl,
brandingCompanyDetails,
brandingColors,
brandingCss,
// Email related settings.
emailId,
@@ -131,27 +127,6 @@ export const updateTeamSettingsRoute = authenticatedProcedure
});
}
// Sanitize custom branding CSS at write time. `null` means inherit-from-org
// for teams, so only run the sanitiser when an explicit string is provided.
// An empty string after sanitisation is collapsed to `null` so the team
// row inherits rather than persisting an empty override.
let cssWarnings: SanitizeBrandingCssWarning[] | undefined;
let sanitizedBrandingCss: string | null | undefined;
if (brandingCss === null) {
sanitizedBrandingCss = null;
} else if (typeof brandingCss === 'string') {
const result = sanitizeBrandingCss(brandingCss);
sanitizedBrandingCss = result.css.trim() === '' ? null : result.css;
cssWarnings = result.warnings;
}
// Strip empty-string colour values; collapse to `null` when the payload
// contains no overrides. For teams this matters because brandingEnabled
// = null inherits from the org — leaving `{}` here would persist a real
// override of nothing once a team toggles brandingEnabled = true.
const normalizedBrandingColors = normalizeBrandingColors(brandingColors);
await prisma.team.update({
where: {
id: teamId,
@@ -179,8 +154,6 @@ export const updateTeamSettingsRoute = authenticatedProcedure
brandingLogo,
brandingUrl,
brandingCompanyDetails,
brandingColors: normalizedBrandingColors === null ? Prisma.DbNull : normalizedBrandingColors,
brandingCss: sanitizedBrandingCss,
// Email related settings.
emailId,
@@ -195,8 +168,4 @@ export const updateTeamSettingsRoute = authenticatedProcedure
},
},
});
return {
cssWarnings: cssWarnings && cssWarnings.length > 0 ? cssWarnings : undefined,
};
});
@@ -1,13 +1,10 @@
import { BRANDING_CSS_MAX_LENGTH } from '@documenso/lib/constants/branding';
import { ZEnvelopeExpirationPeriod } from '@documenso/lib/constants/envelope-expiration';
import { ZEnvelopeReminderSettings } from '@documenso/lib/constants/envelope-reminder';
import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
import { ZCssVarsSchema } from '@documenso/lib/types/css-vars';
import { ZDefaultRecipientsSchema } from '@documenso/lib/types/default-recipients';
import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
import { ZDocumentMetaDateFormatSchema, ZDocumentMetaTimezoneSchema } from '@documenso/lib/types/document-meta';
import { DocumentVisibility } from '@documenso/lib/types/document-visibility';
import { ZSanitizeBrandingCssWarningSchema } from '@documenso/lib/utils/sanitize-branding-css';
import { zEmail } from '@documenso/lib/utils/zod';
import { z } from 'zod';
@@ -38,8 +35,6 @@ export const ZUpdateTeamSettingsRequestSchema = z.object({
brandingLogo: z.string().nullish(),
brandingUrl: z.string().nullish(),
brandingCompanyDetails: z.string().nullish(),
brandingColors: ZCssVarsSchema.nullish(),
brandingCss: z.string().max(BRANDING_CSS_MAX_LENGTH).nullish(),
// Email related settings.
emailId: z.string().nullish(),
@@ -54,6 +49,4 @@ export const ZUpdateTeamSettingsRequestSchema = z.object({
}),
});
export const ZUpdateTeamSettingsResponseSchema = z.object({
cssWarnings: z.array(ZSanitizeBrandingCssWarningSchema).optional(),
});
export const ZUpdateTeamSettingsResponseSchema = z.void();
@@ -269,8 +269,7 @@ export const templateRouter = router({
attachments,
} = payload;
const { id: templateDocumentDataId } = await putNormalizedPdfFileServerSide({
file,
const { id: templateDocumentDataId } = await putNormalizedPdfFileServerSide(file, {
flattenForm: false,
});
-4
View File
@@ -74,10 +74,6 @@ declare namespace NodeJS {
NEXT_PRIVATE_SMTP_FROM_ADDRESS?: string;
NEXT_PUBLIC_DISABLE_SIGNUP?: string;
NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP?: string;
NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP?: string;
NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP?: string;
NEXT_PUBLIC_DISABLE_OIDC_SIGNUP?: string;
NEXT_PRIVATE_ALLOWED_SIGNUP_DOMAINS?: string;
NEXT_PRIVATE_BROWSERLESS_URL?: string;
+2 -12
View File
@@ -1,7 +1,7 @@
import type { HTMLAttributes } from 'react';
import { useEffect, useState } from 'react';
import { useState } from 'react';
import { HexColorInput, HexColorPicker, setNonce } from 'react-colorful';
import { HexColorInput, HexColorPicker } from 'react-colorful';
import { cn } from '../lib/utils';
import { Popover, PopoverContent, PopoverTrigger } from './popover';
@@ -11,7 +11,6 @@ export type ColorPickerProps = {
value: string;
defaultValue?: string;
onChange: (color: string) => void;
nonce?: string;
} & HTMLAttributes<HTMLDivElement>;
export const ColorPicker = ({
@@ -20,7 +19,6 @@ export const ColorPicker = ({
value,
defaultValue = '#000000',
onChange,
nonce,
...props
}: ColorPickerProps) => {
const [color, setColor] = useState(value || defaultValue);
@@ -41,12 +39,6 @@ export const ColorPicker = ({
onChange(inputColor);
};
useEffect(() => {
if (nonce) {
setNonce(nonce);
}
}, [nonce]);
return (
<Popover>
<PopoverTrigger>
@@ -65,7 +57,6 @@ export const ColorPicker = ({
color={color}
onChange={onColorChange}
aria-disabled={disabled}
nonce={nonce}
{...props}
/>
@@ -81,7 +72,6 @@ export const ColorPicker = ({
}
}}
disabled={disabled}
nonce={nonce}
/>
</PopoverContent>
</Popover>
+4 -3
View File
@@ -1,6 +1,5 @@
import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation';
import { APP_DOCUMENT_UPLOAD_SIZE_LIMIT, IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
import { ALLOWED_UPLOAD_MIME_TYPES } from '@documenso/lib/constants/upload';
import { megabytesToBytes } from '@documenso/lib/universal/unit-convertions';
import type { MessageDescriptor } from '@lingui/core';
import { msg } from '@lingui/core/macro';
@@ -55,7 +54,9 @@ export const DocumentDropzone = ({
const organisation = useCurrentOrganisation();
const { getRootProps, getInputProps } = useDropzone({
accept: ALLOWED_UPLOAD_MIME_TYPES,
accept: {
'application/pdf': ['.pdf'],
},
multiple: allowMultiple,
disabled,
onDrop: (acceptedFiles) => {
@@ -150,7 +151,7 @@ export const DocumentDropzone = ({
<p className="mt-6 font-medium text-foreground">{_(heading[type])}</p>
<p className="mt-1 text-center text-muted-foreground/80 text-sm">
{_(disabled ? disabledMessage : msg`Drag & drop PDF, DOCX, or images here.`)}
{_(disabled ? disabledMessage : msg`Drag & drop your PDF here.`)}
</p>
{disabled && IS_BILLING_ENABLED() && (
@@ -1,7 +1,6 @@
import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation';
import { useSession } from '@documenso/lib/client-only/providers/session';
import { APP_DOCUMENT_UPLOAD_SIZE_LIMIT, IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
import { ALLOWED_UPLOAD_MIME_TYPES } from '@documenso/lib/constants/upload';
import { megabytesToBytes } from '@documenso/lib/universal/unit-convertions';
import { isPersonalLayout } from '@documenso/lib/utils/organisations';
import type { MessageDescriptor } from '@lingui/core';
@@ -52,7 +51,9 @@ export const DocumentUploadButton = ({
const isPersonalLayoutMode = isPersonalLayout(organisations);
const { getRootProps, getInputProps } = useDropzone({
accept: ALLOWED_UPLOAD_MIME_TYPES,
accept: {
'application/pdf': ['.pdf'],
},
multiple: internalVersion === '2',
disabled,
maxFiles,
-8
View File
@@ -155,14 +155,6 @@ services:
# Features Optional
- key: NEXT_PUBLIC_DISABLE_SIGNUP
sync: false
- key: NEXT_PUBLIC_DISABLE_EMAIL_PASSWORD_SIGNUP
sync: false
- key: NEXT_PUBLIC_DISABLE_GOOGLE_SIGNUP
sync: false
- key: NEXT_PUBLIC_DISABLE_MICROSOFT_SIGNUP
sync: false
- key: NEXT_PUBLIC_DISABLE_OIDC_SIGNUP
sync: false
- key: NEXT_PUBLIC_USE_INTERNAL_URL_BROWSERLESS
sync: false

Some files were not shown because too many files have changed in this diff Show More