mirror of
https://github.com/documenso/documenso.git
synced 2026-06-27 06:40:53 +10:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bd3192d8f9 | |||
| c915ca97ea | |||
| 478bfe3383 | |||
| 6f95494ad9 |
@@ -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
@@ -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>
|
||||
|
||||
@@ -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>;
|
||||
};
|
||||
@@ -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,
|
||||
});
|
||||
}
|
||||
}, []);
|
||||
|
||||
@@ -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}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
User-agent: *
|
||||
Disallow: /sign/
|
||||
Disallow: /d/
|
||||
Disallow: /embed/
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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`). |
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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}
|
||||
|
||||
Generated
-15
@@ -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",
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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';
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
@@ -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';
|
||||
@@ -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 {
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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 "Standardeinstellungen, die auf dieses Team angewendet werden. Vererbte
|
||||
msgid "Default Signature Settings"
|
||||
msgstr "Standard-Signatureinstellungen"
|
||||
|
||||
#: apps/remix/app/components/forms/document-preferences-form.tsx
|
||||
msgid "Default Signing Reminders"
|
||||
msgstr "Standard-Signaturerinnerungen"
|
||||
|
||||
#: apps/remix/app/components/forms/document-preferences-form.tsx
|
||||
msgid "Default Time Zone"
|
||||
msgstr "Standard-Zeitzone"
|
||||
@@ -3437,13 +3463,11 @@ msgstr "Dokumenteneigentum delegieren"
|
||||
msgid "Delegate Document Ownership"
|
||||
msgstr "Dokumenteigentum delegieren"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
msgid "delete"
|
||||
msgstr "löschen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx
|
||||
@@ -3457,7 +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 I’m Timur"
|
||||
msgstr "Hey, ich bin Timur"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr "Hallo {recipientName},"
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "Hallo, {userName},"
|
||||
@@ -5677,7 +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"
|
||||
|
||||
@@ -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 I’m Timur"
|
||||
msgstr "Hey I’m Timur"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr "Hi {recipientName},"
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "Hi {userName},"
|
||||
@@ -5672,7 +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"
|
||||
|
||||
@@ -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 I’m Timur"
|
||||
msgstr "Hola, soy Timur"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr "Hola, {recipientName},"
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "Hola, {userName},"
|
||||
@@ -5677,7 +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"
|
||||
|
||||
@@ -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 quelqu’un ?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/assistant-confirmation-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/claim-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/document-duplicate-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/document-resend-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -2401,9 +2405,7 @@ msgstr "Vous ne trouvez pas quelqu’un ?"
|
||||
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/team-member-update-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-duplicate-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-move-to-folder-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/token-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
@@ -2779,6 +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 n’ont pas encore terminé la signature. Utilise le paramètre par défaut de l’équipe lorsqu’il est défini sur hériter."
|
||||
|
||||
#: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
@@ -2879,10 +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 n’ont pas encore terminé la signature."
|
||||
|
||||
#: apps/remix/app/components/forms/document-preferences-form.tsx
|
||||
msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately."
|
||||
msgstr "Contrôle si les journaux d'audit seront inclus dans le document lorsqu'il est téléchargé. Les journaux d'audit peuvent toujours être téléchargés séparément sur la page des journaux."
|
||||
@@ -3313,6 +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 d’API d’équipe pour déléguer la propriété du
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/site-settings.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks.$id._index.tsx
|
||||
#: packages/ui/components/document/reminder-settings-picker.tsx
|
||||
msgid "Enabled"
|
||||
msgstr "Activé"
|
||||
|
||||
@@ -4906,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 I’m Timur"
|
||||
msgstr "Salut, je suis Timur"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr "Bonjour {recipientName},"
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "Bonjour {userName},"
|
||||
@@ -5677,7 +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 l’organisation."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
|
||||
msgid "Member has been removed from the team."
|
||||
msgstr "Le membre a été supprimé de l’équipe."
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-members-table.tsx
|
||||
msgid "Member Since"
|
||||
msgstr "Membre depuis"
|
||||
@@ -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>l’assistance</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 l’organisation"
|
||||
|
||||
#: 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 l’enveloppe"
|
||||
|
||||
#: packages/ui/components/document/reminder-settings-picker.tsx
|
||||
msgid "Send first reminder after"
|
||||
msgstr "Envoyer le premier rappel après"
|
||||
|
||||
#: apps/remix/app/components/forms/document-preferences-form.tsx
|
||||
msgid "Send on Behalf of Team"
|
||||
msgstr "Envoyer au nom de l'équipe"
|
||||
@@ -9156,6 +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 l’abonnement"
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
|
||||
@@ -9991,7 +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é n’est 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 d’abord être invités dans l’organisation. Seuls les administrateurs et les responsables de l’organisation peuvent inviter de nouveaux membres — veuillez contacter l’un d’entre eux pour qu’il invite des membres en votre nom."
|
||||
|
||||
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
|
||||
msgid "To add members to this team, you must first add them to the organisation."
|
||||
msgstr "Pour ajouter des membres à cette équipe, vous devez d’abord les ajouter à l’organisation."
|
||||
@@ -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 n’avons pas pu activer les fonctionnalités d’IA pour le moment. Veuillez réessayer."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
|
||||
msgid "We couldn't remove this member. Please try again later."
|
||||
msgstr "Nous n’avons pas pu supprimer ce membre. Veuillez réessayer plus tard."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups.$id.tsx
|
||||
msgid "We couldn't update the group. Please try again."
|
||||
msgstr "Nous n'avons pas pu mettre à jour le groupe. Veuillez réessayer."
|
||||
@@ -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 n’avons 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 n’avons pas pu vérifier que vous êtes humain. Veuillez réessayer."
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-password.tsx
|
||||
@@ -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 l’utilisateur suivant de l’organisation <0>{organisationName}</0> :"
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
|
||||
msgid "You are about to remove the following user from the team <0>{teamName}</0>:"
|
||||
msgstr "Vous êtes sur le point de retirer l’utilisateur suivant de l’équipe <0>{teamName}</0> :"
|
||||
|
||||
#. placeholder {0}: teamEmail.team.name
|
||||
#. placeholder {1}: teamEmail.team.url
|
||||
#: apps/remix/app/components/general/teams/team-email-usage.tsx
|
||||
@@ -12877,6 +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"
|
||||
|
||||
@@ -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 I’m Timur"
|
||||
msgstr "Ciao, sono Timur"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr "Ciao {recipientName},"
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "Ciao {userName},"
|
||||
@@ -5677,7 +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 dell’abbonamento"
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-swap-subscription-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-item-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx
|
||||
@@ -9991,7 +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 all’organizzazione. Solo gli amministratori e i responsabili dell’organizzazione possono invitare nuovi membri: contatta uno di loro per invitare membri per tuo conto."
|
||||
|
||||
#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx
|
||||
msgid "To add members to this team, you must first add them to the organisation."
|
||||
msgstr "Per aggiungere membri a questo team, devi prima aggiungerli all’organizzazione."
|
||||
@@ -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 l’accesso 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"
|
||||
|
||||
@@ -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 I’m Timur"
|
||||
msgstr "こんにちは、Timur です"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr "{recipientName} 様"
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "{userName} さん、こんにちは。"
|
||||
@@ -5677,7 +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 "あなたのテンプレート"
|
||||
|
||||
@@ -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 I’m Timur"
|
||||
msgstr "안녕하세요, 저는 Timur입니다"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr "{recipientName}님, 안녕하세요."
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "안녕하세요 {userName}님,"
|
||||
@@ -5677,7 +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 "내 템플릿"
|
||||
|
||||
@@ -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 e‑mail met een uitnodiging gestuurd."
|
||||
msgid "An email with this address already exists."
|
||||
msgstr "Er bestaat al een e-mailadres met dit adres."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-organisation-member-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/organisation-email-create-dialog.tsx
|
||||
#: apps/remix/app/components/forms/avatar-image.tsx
|
||||
#: apps/remix/app/components/forms/password.tsx
|
||||
@@ -1690,10 +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 I’m Timur"
|
||||
msgstr "Hoi, ik ben Timur"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr "Hoi {recipientName},"
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "Hallo {userName},"
|
||||
@@ -5677,7 +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 e‑mailadres hebt in
|
||||
msgid "Please try again or contact our support."
|
||||
msgstr "Probeer het opnieuw of neem contact op met onze ondersteuning."
|
||||
|
||||
#. placeholder {0}: `'${_(deleteMessage)}'`
|
||||
#. placeholder {0}: `'${t(deleteMessage)}'`
|
||||
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
msgid "Please type {0} to confirm"
|
||||
msgstr "Typ {0} om te bevestigen."
|
||||
@@ -8184,7 +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 "Team‑e‑mail verwijderen"
|
||||
msgid "Remove team member"
|
||||
msgstr "Teamlid verwijderen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-team-member-delete-dialog.tsx
|
||||
msgid "Remove Team Member"
|
||||
msgstr "Teamlid verwijderen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-rename-dialog.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
#: apps/remix/app/components/tables/documents-table-action-dropdown.tsx
|
||||
@@ -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 team‑e‑mail te verwijderen uit <0>{
|
||||
msgid "You are about to give all organisation members access to this team under their organisation role."
|
||||
msgstr "Je staat op het punt alle organisatieleden toegang te geven tot dit team onder hun organisatierol."
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-delete-dialog.tsx
|
||||
msgid "You are about to hide <0>\"{documentTitle}\"</0>"
|
||||
msgstr "Je staat op het punt <0>\"{documentTitle}\"</0> te verbergen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
msgid "You are about to hide <0>\"{title}\"</0>"
|
||||
msgstr "Je staat op het punt om <0>\"{title}\"</0> te verbergen"
|
||||
@@ -12555,6 +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"
|
||||
|
||||
+232
-108
File diff suppressed because it is too large
Load Diff
@@ -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 I’m Timur"
|
||||
msgstr "Ei, eu sou o Timur"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "Olá {userName},"
|
||||
@@ -5672,7 +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 ""
|
||||
|
||||
@@ -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 I’m Timur"
|
||||
msgstr "嗨,我是 Timur"
|
||||
|
||||
#: packages/email/template-components/template-document-reminder.tsx
|
||||
msgid "Hi {recipientName},"
|
||||
msgstr "{recipientName},您好:"
|
||||
|
||||
#: packages/email/templates/bulk-send-complete.tsx
|
||||
msgid "Hi {userName},"
|
||||
msgstr "您好 {userName},"
|
||||
@@ -5677,7 +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 +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'),
|
||||
})
|
||||
|
||||
@@ -47,7 +47,6 @@ export const ZDocumentSchema = LegacyDocumentSchema.pick({
|
||||
id: true,
|
||||
data: true,
|
||||
initialData: true,
|
||||
originalMimeType: true,
|
||||
}).extend({
|
||||
envelopeItemId: z.string(),
|
||||
}),
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
@@ -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');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -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 };
|
||||
};
|
||||
@@ -191,8 +191,6 @@ export const generateDefaultTeamSettings = (): Omit<TeamGlobalSettings, 'id' | '
|
||||
brandingLogo: null,
|
||||
brandingUrl: null,
|
||||
brandingCompanyDetails: null,
|
||||
brandingColors: null,
|
||||
brandingCss: null,
|
||||
|
||||
emailDocumentSettings: null,
|
||||
emailId: null,
|
||||
|
||||
-2
@@ -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;
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
|
||||
Vendored
-4
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user