mirror of
https://github.com/documenso/documenso.git
synced 2026-07-11 05:25:08 +10:00
Merge branch 'main' into fix/cc-recipient-order-last
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
---
|
||||
date: 2026-05-28
|
||||
title: Custom Brand Logo Url
|
||||
---
|
||||
|
||||
# Problem
|
||||
|
||||
`brandingUrl` (the configured "Brand Website") is persisted and editable in branding
|
||||
settings, but historically it was never consumed anywhere. It flowed into the database,
|
||||
the settings form, and the admin read-only view, but never affected any rendered output.
|
||||
|
||||
We want `brandingUrl` to actually do something, with deliberately different behavior per
|
||||
surface.
|
||||
|
||||
# Relationship we're going for
|
||||
|
||||
`brandingUrl` is an **email-only** linking concept. It is intentionally **not** used on
|
||||
in-app signing surfaces.
|
||||
|
||||
| Surface | Custom branding logo configured | `brandingUrl` behavior |
|
||||
| --- | --- | --- |
|
||||
| Transactional emails (logo) | Logo shown | Logo links to `brandingUrl` when it is a safe http(s) URL; otherwise plain image |
|
||||
| Transactional emails (footer) | n/a | `brandingUrl` rendered as a link in the footer when it is a safe http(s) URL |
|
||||
| Signing pages (V1 + V2, normal + direct-template) | Logo shown | Ignored — logo is a plain image with no link |
|
||||
| Signing pages (no custom logo) | Documenso fallback shown | Fallback keeps its internal `/` link |
|
||||
| Embedded signing | Logo shown | Ignored (logo not linked) |
|
||||
| Embedded authoring/editor | Logo shown | Ignored |
|
||||
| Settings / admin branding previews | n/a | Unchanged (display only) |
|
||||
|
||||
Rationale:
|
||||
|
||||
- On signing pages the recipient is mid-task; sending them off to an external marketing
|
||||
site via the logo is undesirable, so the custom logo is a plain image there.
|
||||
- In emails the logo and a footer link to the brand's own site are a normal, expected
|
||||
pattern and reinforce that the email is legitimately from that brand.
|
||||
|
||||
# Decisions
|
||||
|
||||
## Scope
|
||||
|
||||
- Use `brandingUrl` only in transactional email rendering:
|
||||
- The shared email logo component links the custom branding logo to `brandingUrl`.
|
||||
- The shared email footer renders `brandingUrl` as a link.
|
||||
- On signing surfaces, render a configured custom branding logo as a plain image with no
|
||||
link wrapper. Leave the Documenso fallback logo's internal `/` link untouched.
|
||||
- Do not change embedded signing, embedded authoring/editor, or settings/admin previews.
|
||||
- No Prisma schema or database migration. `brandingUrl` already exists and is editable.
|
||||
|
||||
## URL safety
|
||||
|
||||
Rendering must be defensive because old/imported data can bypass the branding form's URL
|
||||
validation. Only treat the stored value as a usable Brand Website when it parses as an
|
||||
absolute `http:` or `https:` URL.
|
||||
|
||||
- Empty, missing, invalid, relative, or non-http(s) values are treated as "no Brand
|
||||
Website" and produce a plain logo / no footer link.
|
||||
- Do not mutate stored settings or run a cleanup migration.
|
||||
- Factored into a single shared helper so both email logo and footer apply identical rules:
|
||||
- `packages/email/utils/branding-url.ts` -> `getSafeBrandingUrl(value): string | null`.
|
||||
|
||||
## Email rendering
|
||||
|
||||
- New shared component `packages/email/template-components/template-branding-logo.tsx`
|
||||
(`TemplateBrandingLogo`) renders either:
|
||||
- the custom branding logo, wrapped in a `Link` to the safe `brandingUrl` with
|
||||
`target="_blank"` when one exists, or a plain `Img` when not; or
|
||||
- the Documenso fallback logo (`/static/logo.png`) when custom branding is disabled or
|
||||
no logo is set.
|
||||
- This component replaced the duplicated `brandingEnabled && brandingLogo ? <Img/> : <fallback/>`
|
||||
ternary that was copy-pasted across all transactional email templates.
|
||||
- `packages/email/template-components/template-footer.tsx` renders `brandingUrl` as a
|
||||
footer link (via `getSafeBrandingUrl`) when branding is enabled and the URL is safe.
|
||||
|
||||
The branding context already exposes `brandingUrl` (`packages/email/providers/branding.tsx`),
|
||||
populated by `teamGlobalSettingsToBranding` / `organisationGlobalSettingsToBranding`
|
||||
(which spread `...settings`), so no additional plumbing into the email branding context was
|
||||
required.
|
||||
|
||||
## Signing rendering
|
||||
|
||||
- `apps/remix/app/components/general/document-signing/document-signing-page-view-v1.tsx`:
|
||||
custom logo renders as a bare `<img>`. `brandingUrl` is not read; the local branding type
|
||||
and loader payload no longer carry it.
|
||||
- `apps/remix/app/components/general/envelope-signing/envelope-signer-header.tsx` (V2,
|
||||
shared by normal and direct-template signing): custom logo renders as a bare `<img>`; the
|
||||
Documenso fallback keeps its `<Link to="/">`.
|
||||
- `apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx`: V1 loader branding payload no
|
||||
longer includes `brandingUrl`.
|
||||
- `packages/lib/server-only/envelope/get-envelope-for-recipient-signing.ts` and
|
||||
`get-envelope-for-direct-template-signing.ts`: `brandingUrl` removed from the V2
|
||||
`EnvelopeForSigningResponse.settings` schema/payload since it is not consumed there.
|
||||
|
||||
# History
|
||||
|
||||
An earlier iteration of this plan wired `brandingUrl` into the in-app signing pages so a
|
||||
custom logo linked to the Brand Website (external `<a target="_blank">`, internal `/`
|
||||
fallback otherwise) and added `brandingUrl` to the V1/V2 signing payloads. That direction
|
||||
was reversed: signing-page logos are now plain images and `brandingUrl` is email-only. The
|
||||
signing payload additions were removed.
|
||||
|
||||
# Test coverage
|
||||
|
||||
`packages/app-tests/e2e/signing-branding.spec.ts`:
|
||||
|
||||
- V1 normal `/sign/:token`: custom logo is a plain image, not inside a link, and no
|
||||
`brandingUrl` link is present.
|
||||
- V2 normal `/sign/:token` and V2 direct-template: same plain-image assertions.
|
||||
- V2 with no custom logo: Documenso fallback still links to `/`.
|
||||
- Embedded signing: no custom-logo Brand Website link is rendered.
|
||||
|
||||
# Acceptance criteria
|
||||
|
||||
- A custom branding logo on any signing surface (V1, V2 normal, V2 direct-template, embedded)
|
||||
renders as a plain image with no link, and `brandingUrl` is never rendered as a link there.
|
||||
- Documenso fallback logos continue linking to `/`.
|
||||
- In transactional emails, when a custom logo and a safe `brandingUrl` are configured, the
|
||||
email logo links to `brandingUrl` (new tab) and the footer shows the Brand Website link.
|
||||
- In transactional emails, when `brandingUrl` is empty/invalid/relative/non-http(s), the logo
|
||||
is a plain image and no footer Brand Website link is shown.
|
||||
- URL safety is enforced through the single shared `getSafeBrandingUrl` helper.
|
||||
- Settings/admin branding previews are unchanged.
|
||||
- No schema or migration changes.
|
||||
@@ -7,14 +7,14 @@ import { Callout } from 'fumadocs-ui/components/callout';
|
||||
import { Step, Steps } from 'fumadocs-ui/components/steps';
|
||||
|
||||
<Callout type="error">
|
||||
Account deletion is permanent and irreversible. All documents, signatures, templates, and account
|
||||
data will be permanently removed. Any active subscription will be cancelled.
|
||||
Account deletion is permanent and irreversible. Your account, signatures, and personal data will be
|
||||
permanently removed, and any active subscription will be cancelled. How your organisations and
|
||||
documents are handled is explained below.
|
||||
</Callout>
|
||||
|
||||
## Before Deleting
|
||||
|
||||
- Download any documents you need to keep
|
||||
- Cancel any active subscriptions
|
||||
- Disable two-factor authentication (required before deletion)
|
||||
|
||||
## Delete Your Account
|
||||
@@ -36,6 +36,31 @@ import { Step, Steps } from 'fumadocs-ui/components/steps';
|
||||
If you have two-factor authentication enabled, you must disable it before deleting your account.
|
||||
</Callout>
|
||||
|
||||
## What Happens to Your Organisations
|
||||
|
||||
When you delete your account, the organisations you **own** are permanently deleted along with all of
|
||||
their teams. If an owned organisation has an active subscription, it is scheduled for cancellation at
|
||||
the end of the current billing period.
|
||||
|
||||
Organisations that you are only a **member** of are not deleted. You are simply removed from them, and
|
||||
the organisation continues to operate as normal.
|
||||
|
||||
## What Happens to Your Documents
|
||||
|
||||
The way your documents and templates are handled depends on whether you owned the organisation they
|
||||
belong to:
|
||||
|
||||
- **Organisations you owned** — Completed and in-progress documents are retained in an anonymized form
|
||||
(reassigned to an internal system account) so the other parties keep their records. Draft documents
|
||||
and templates are permanently removed.
|
||||
- **Organisations you were a member of** — Your documents and templates are transferred to the
|
||||
organisation owner, so they remain accessible to the organisation after you leave.
|
||||
|
||||
<Callout type="warn">
|
||||
Documents that are retained in anonymized form are no longer associated with your account and cannot
|
||||
be recovered or accessed by you after deletion. Download anything you need to keep beforehand.
|
||||
</Callout>
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
+10
-1
@@ -50,6 +50,11 @@ import { useRequiredDocumentSigningAuthContext } from './document-signing-auth-p
|
||||
import { DocumentSigningCompleteDialog } from './document-signing-complete-dialog';
|
||||
import { DocumentSigningRecipientProvider } from './document-signing-recipient-provider';
|
||||
|
||||
type DocumentSigningBranding = {
|
||||
brandingEnabled: boolean;
|
||||
brandingLogo: string;
|
||||
};
|
||||
|
||||
export type DocumentSigningPageViewV1Props = {
|
||||
recipient: RecipientWithFields;
|
||||
document: DocumentAndSender;
|
||||
@@ -57,6 +62,7 @@ export type DocumentSigningPageViewV1Props = {
|
||||
completedFields: CompletedField[];
|
||||
isRecipientsTurn: boolean;
|
||||
allRecipients?: RecipientWithFields[];
|
||||
branding: DocumentSigningBranding;
|
||||
includeSenderDetails: boolean;
|
||||
};
|
||||
|
||||
@@ -68,6 +74,7 @@ export const DocumentSigningPageViewV1 = ({
|
||||
isRecipientsTurn,
|
||||
allRecipients = [],
|
||||
includeSenderDetails,
|
||||
branding,
|
||||
}: DocumentSigningPageViewV1Props) => {
|
||||
const { documentData, documentMeta } = document;
|
||||
|
||||
@@ -168,10 +175,12 @@ export const DocumentSigningPageViewV1 = ({
|
||||
const pendingFields = fieldsRequiringValidation.filter((field) => !field.inserted);
|
||||
const hasPendingFields = pendingFields.length > 0;
|
||||
|
||||
const hasCustomBrandingLogo = branding.brandingEnabled && Boolean(branding.brandingLogo);
|
||||
|
||||
return (
|
||||
<DocumentSigningRecipientProvider recipient={recipient} targetSigner={targetSigner}>
|
||||
<div className="mx-auto w-full max-w-screen-xl sm:px-6">
|
||||
{document.team.teamGlobalSettings.brandingEnabled && document.team.teamGlobalSettings.brandingLogo && (
|
||||
{hasCustomBrandingLogo && (
|
||||
<img
|
||||
src={`/api/branding/logo/team/${document.teamId}`}
|
||||
alt={`${document.team.name}'s Logo`}
|
||||
|
||||
@@ -27,27 +27,25 @@ export const EnvelopeSignerHeader = () => {
|
||||
const { envelopeData, envelope, recipientFieldsRemaining, recipient } = useRequiredEnvelopeSigningContext();
|
||||
|
||||
const isEmbedSigning = useEmbedSigningContext() !== null;
|
||||
const hasCustomBrandingLogo = envelopeData.settings.brandingEnabled && Boolean(envelopeData.settings.brandingLogo);
|
||||
|
||||
return (
|
||||
<nav className="embed--DocumentWidgetHeader flex max-w-screen flex-row justify-between border-border border-b bg-background px-4 py-3 md:px-6">
|
||||
{/* Left side - Logo and title */}
|
||||
<div className="flex min-w-0 flex-1 items-center space-x-2 md:w-auto md:flex-none">
|
||||
{!isEmbedSigning && (
|
||||
<Link to="/" className="flex-shrink-0">
|
||||
{envelopeData.settings.brandingEnabled && envelopeData.settings.brandingLogo ? (
|
||||
<img
|
||||
src={`/api/branding/logo/team/${envelope.teamId}`}
|
||||
alt={`${envelope.team.name}'s Logo`}
|
||||
className="h-6 w-auto"
|
||||
/>
|
||||
) : (
|
||||
<>
|
||||
<BrandingLogo className="hidden h-6 w-auto md:block" />
|
||||
<BrandingLogoIcon className="h-6 w-auto md:hidden" />
|
||||
</>
|
||||
)}
|
||||
</Link>
|
||||
)}
|
||||
{!isEmbedSigning &&
|
||||
(hasCustomBrandingLogo ? (
|
||||
<img
|
||||
src={`/api/branding/logo/team/${envelope.teamId}`}
|
||||
alt={`${envelope.team.name}'s Logo`}
|
||||
className="h-6 w-auto flex-shrink-0"
|
||||
/>
|
||||
) : (
|
||||
<Link to="/" className="flex-shrink-0">
|
||||
<BrandingLogo className="hidden h-6 w-auto md:block" />
|
||||
<BrandingLogoIcon className="h-6 w-auto md:hidden" />
|
||||
</Link>
|
||||
))}
|
||||
|
||||
<h1 title={envelope.title} className="min-w-0 truncate font-semibold text-base text-foreground md:hidden">
|
||||
{envelope.title}
|
||||
|
||||
@@ -164,6 +164,10 @@ const handleV1Loader = async ({ params, request }: Route.LoaderArgs) => {
|
||||
recipientSignature,
|
||||
isRecipientsTurn,
|
||||
includeSenderDetails: settings.includeSenderDetails,
|
||||
branding: {
|
||||
brandingEnabled: settings.brandingEnabled,
|
||||
brandingLogo: settings.brandingLogo,
|
||||
},
|
||||
} as const;
|
||||
};
|
||||
|
||||
@@ -338,6 +342,7 @@ const SigningPageV1 = ({ data }: { data: Awaited<ReturnType<typeof handleV1Loade
|
||||
isRecipientsTurn,
|
||||
allRecipients,
|
||||
includeSenderDetails,
|
||||
branding,
|
||||
recipientWithFields,
|
||||
} = data;
|
||||
|
||||
@@ -410,6 +415,7 @@ const SigningPageV1 = ({ data }: { data: Awaited<ReturnType<typeof handleV1Loade
|
||||
isRecipientsTurn={isRecipientsTurn}
|
||||
allRecipients={allRecipients}
|
||||
includeSenderDetails={includeSenderDetails}
|
||||
branding={branding}
|
||||
/>
|
||||
</div>
|
||||
</DocumentSigningAuthProvider>
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
import fs from 'node:fs/promises';
|
||||
import path from 'node:path';
|
||||
|
||||
import { formatDirectTemplatePath } from '@documenso/lib/utils/templates';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import { seedPendingDocumentWithFullFields } from '@documenso/prisma/seed/documents';
|
||||
import { seedDirectTemplate } from '@documenso/prisma/seed/templates';
|
||||
import { seedUser } from '@documenso/prisma/seed/users';
|
||||
import { expect, type Page, test } from '@playwright/test';
|
||||
import { DocumentDataType, FieldType } from '@prisma/client';
|
||||
|
||||
const BRANDING_URL = 'https://brand.example/signing?source=documenso';
|
||||
const PDF_PAGE_SELECTOR = 'img[data-page-number]';
|
||||
|
||||
const readBrandingLogo = async () => {
|
||||
const logo = await fs.readFile(path.join(__dirname, '../../assets/logo.png'));
|
||||
|
||||
return JSON.stringify({
|
||||
type: DocumentDataType.BYTES_64,
|
||||
data: logo.toString('base64'),
|
||||
});
|
||||
};
|
||||
|
||||
const enableOrganisationBranding = async ({
|
||||
organisationGlobalSettingsId,
|
||||
brandingUrl = BRANDING_URL,
|
||||
}: {
|
||||
organisationGlobalSettingsId: string;
|
||||
brandingUrl?: string;
|
||||
}) => {
|
||||
await prisma.organisationGlobalSettings.update({
|
||||
where: { id: organisationGlobalSettingsId },
|
||||
data: {
|
||||
brandingEnabled: true,
|
||||
brandingLogo: await readBrandingLogo(),
|
||||
brandingUrl,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* On signing surfaces the custom branding logo must render as a plain image.
|
||||
* It must not be wrapped in any link, and the Brand Website must never appear
|
||||
* as a link on these pages.
|
||||
*/
|
||||
const expectPlainBrandingLogo = async (page: Page, logoName: string) => {
|
||||
const logo = page.getByRole('img', { name: logoName });
|
||||
|
||||
await expect(logo).toBeVisible();
|
||||
|
||||
// The custom logo must not be wrapped in a link.
|
||||
await expect(page.getByRole('link', { name: logoName })).toHaveCount(0);
|
||||
|
||||
// The Brand Website must never be rendered as a link on signing pages.
|
||||
await expect(page.locator(`a[href="${BRANDING_URL}"]`)).toHaveCount(0);
|
||||
};
|
||||
|
||||
test('[SIGNING_BRANDING]: V1 normal signing renders custom logo as a plain image', async ({ page }) => {
|
||||
const { user, team, organisation } = await seedUser();
|
||||
|
||||
await enableOrganisationBranding({
|
||||
organisationGlobalSettingsId: organisation.organisationGlobalSettingsId,
|
||||
});
|
||||
|
||||
const { recipients } = await seedPendingDocumentWithFullFields({
|
||||
owner: user,
|
||||
teamId: team.id,
|
||||
recipients: ['v1-branding-signer@test.documenso.com'],
|
||||
fields: [FieldType.SIGNATURE],
|
||||
});
|
||||
|
||||
await page.goto(`/sign/${recipients[0].token}`);
|
||||
|
||||
await expectPlainBrandingLogo(page, `${team.name}'s Logo`);
|
||||
});
|
||||
|
||||
test('[SIGNING_BRANDING]: V2 signing renders custom logo as a plain image', async ({ page }) => {
|
||||
const { user, team, organisation } = await seedUser();
|
||||
|
||||
await enableOrganisationBranding({
|
||||
organisationGlobalSettingsId: organisation.organisationGlobalSettingsId,
|
||||
});
|
||||
|
||||
const { recipients } = await seedPendingDocumentWithFullFields({
|
||||
owner: user,
|
||||
teamId: team.id,
|
||||
recipients: ['v2-branding-signer@test.documenso.com'],
|
||||
fields: [FieldType.SIGNATURE],
|
||||
updateDocumentOptions: { internalVersion: 2 },
|
||||
});
|
||||
|
||||
const directTemplate = await seedDirectTemplate({
|
||||
title: 'V2 Branding Direct Template',
|
||||
userId: user.id,
|
||||
teamId: team.id,
|
||||
internalVersion: 2,
|
||||
});
|
||||
|
||||
await page.goto(`/sign/${recipients[0].token}`);
|
||||
await expectPlainBrandingLogo(page, `${team.name}'s Logo`);
|
||||
|
||||
await page.goto(formatDirectTemplatePath(directTemplate.directLink?.token || ''));
|
||||
await expectPlainBrandingLogo(page, `${team.name}'s Logo`);
|
||||
});
|
||||
|
||||
test('[SIGNING_BRANDING]: V2 signing keeps internal link for the Documenso fallback logo', async ({ page }) => {
|
||||
const { user, team } = await seedUser();
|
||||
|
||||
const { recipients } = await seedPendingDocumentWithFullFields({
|
||||
owner: user,
|
||||
teamId: team.id,
|
||||
recipients: ['v2-fallback-signer@test.documenso.com'],
|
||||
fields: [FieldType.SIGNATURE],
|
||||
updateDocumentOptions: { internalVersion: 2 },
|
||||
});
|
||||
|
||||
await page.goto(`/sign/${recipients[0].token}`);
|
||||
|
||||
const fallbackLogoLink = page.locator('a[href="/"]').first();
|
||||
|
||||
await expect(fallbackLogoLink).toBeVisible();
|
||||
});
|
||||
|
||||
test('[SIGNING_BRANDING]: embedded signing does not render custom logo Brand Website links', async ({ page }) => {
|
||||
const { user, team, organisation } = await seedUser();
|
||||
|
||||
await enableOrganisationBranding({
|
||||
organisationGlobalSettingsId: organisation.organisationGlobalSettingsId,
|
||||
});
|
||||
|
||||
const { recipients } = await seedPendingDocumentWithFullFields({
|
||||
owner: user,
|
||||
teamId: team.id,
|
||||
recipients: ['embed-branding-signer@test.documenso.com'],
|
||||
fields: [FieldType.SIGNATURE],
|
||||
updateDocumentOptions: { internalVersion: 2 },
|
||||
});
|
||||
|
||||
await page.goto(`/embed/sign/${recipients[0].token}`);
|
||||
await expect(page.locator(PDF_PAGE_SELECTOR).first()).toBeVisible({ timeout: 30_000 });
|
||||
|
||||
await expect(page.locator(`a[href="${BRANDING_URL}"]`)).toHaveCount(0);
|
||||
await expect(page.getByRole('link', { name: `${team.name}'s Logo` })).toHaveCount(0);
|
||||
});
|
||||
@@ -1,23 +1,395 @@
|
||||
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
|
||||
import { ORGANISATION_USER_ACCOUNT_TYPE } from '@documenso/lib/constants/organisations';
|
||||
import { getUserByEmail } from '@documenso/lib/server-only/user/get-user-by-email';
|
||||
import { nanoid } from '@documenso/lib/universal/id';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import type { User } from '@documenso/prisma/client';
|
||||
import { DocumentStatus, EnvelopeType, SubscriptionStatus } from '@documenso/prisma/client';
|
||||
import { seedBlankDocument } from '@documenso/prisma/seed/documents';
|
||||
import { seedOrganisationMembers } from '@documenso/prisma/seed/organisations';
|
||||
import { seedUser } from '@documenso/prisma/seed/users';
|
||||
import type { Page } from '@playwright/test';
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
import { apiSignin } from '../fixtures/authentication';
|
||||
|
||||
test('[USER] delete account', async ({ page }) => {
|
||||
const { user } = await seedUser();
|
||||
test.describe.configure({ mode: 'parallel' });
|
||||
|
||||
await apiSignin({ page, email: user.email, redirectPath: '/settings' });
|
||||
const WEBAPP_BASE_URL = NEXT_PUBLIC_WEBAPP_URL();
|
||||
|
||||
/**
|
||||
* The deleted-account service account is where orphaned DOCUMENT envelopes land
|
||||
* when the team/org they belong to is torn down. It is created by a migration so
|
||||
* it always exists in the test database.
|
||||
*/
|
||||
const getDeletedServiceAccount = async () => {
|
||||
const deletedAccount = await prisma.user.findFirstOrThrow({
|
||||
where: { email: { startsWith: 'deleted-account@' } },
|
||||
select: {
|
||||
id: true,
|
||||
ownedOrganisations: { select: { teams: { select: { id: true } } } },
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
id: deletedAccount.id,
|
||||
teamId: deletedAccount.ownedOrganisations[0].teams[0].id,
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Drives the account deletion through the settings UI, exactly as a user would.
|
||||
* Returns once the app has redirected to the sign-in page (deletion is performed
|
||||
* synchronously by the `profile.deleteAccount` mutation before the redirect).
|
||||
*/
|
||||
const deleteAccountViaUi = async (page: Page, email: string) => {
|
||||
await apiSignin({ page, email, redirectPath: '/settings' });
|
||||
|
||||
await page.getByRole('button', { name: 'Delete Account' }).click();
|
||||
await page.getByLabel('Confirm Email').fill(user.email);
|
||||
await page.getByLabel('Confirm Email').fill(email);
|
||||
|
||||
await expect(page.getByRole('button', { name: 'Confirm Deletion' })).not.toBeDisabled();
|
||||
await page.getByRole('button', { name: 'Confirm Deletion' }).click();
|
||||
|
||||
await page.waitForURL(`${NEXT_PUBLIC_WEBAPP_URL()}/signin`);
|
||||
await page.waitForURL(`${WEBAPP_BASE_URL}/signin`);
|
||||
};
|
||||
|
||||
// Verify that the user no longer exists in the database
|
||||
const seedDocumentWithStatus = async (sender: User, teamId: number, key: string, status: DocumentStatus) => {
|
||||
const document = await seedBlankDocument(sender, teamId, { key });
|
||||
|
||||
if (status !== DocumentStatus.DRAFT) {
|
||||
await prisma.envelope.update({
|
||||
where: { id: document.id },
|
||||
data: { status },
|
||||
});
|
||||
}
|
||||
|
||||
return document;
|
||||
};
|
||||
|
||||
const waitForOrganisationToBeGone = async (organisationId: string) => {
|
||||
await expect
|
||||
.poll(
|
||||
async () => {
|
||||
const org = await prisma.organisation.findUnique({
|
||||
where: { id: organisationId },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
return org === null;
|
||||
},
|
||||
{
|
||||
message: `Organisation ${organisationId} was not removed after account deletion`,
|
||||
timeout: 15_000,
|
||||
intervals: [250, 500, 1000],
|
||||
},
|
||||
)
|
||||
.toBe(true);
|
||||
};
|
||||
|
||||
// ─── Happy path: the basic flow still works ──────────────────────────────────
|
||||
|
||||
test('[USER] delete account', async ({ page }) => {
|
||||
const { user } = await seedUser();
|
||||
|
||||
await deleteAccountViaUi(page, user.email);
|
||||
|
||||
// Verify that the user no longer exists in the database.
|
||||
await expect(getUserByEmail({ email: user.email })).rejects.toThrow();
|
||||
});
|
||||
|
||||
// ─── Owned organisation: documents orphaned to the service account ───────────
|
||||
|
||||
test('[USER][DELETE_ACCOUNT]: owned org docs are orphaned to service account, drafts and templates removed', async ({
|
||||
page,
|
||||
}) => {
|
||||
const { user, organisation, team } = await seedUser();
|
||||
|
||||
// Inflight/completed DOCUMENT envelopes that must survive as orphans.
|
||||
const completed = await seedDocumentWithStatus(user, team.id, 'owned-completed', DocumentStatus.COMPLETED);
|
||||
const pending = await seedDocumentWithStatus(user, team.id, 'owned-pending', DocumentStatus.PENDING);
|
||||
const rejected = await seedDocumentWithStatus(user, team.id, 'owned-rejected', DocumentStatus.REJECTED);
|
||||
|
||||
// A draft DOCUMENT — orphan only re-parents PENDING/REJECTED/COMPLETED, so it is hard-deleted.
|
||||
const draft = await seedDocumentWithStatus(user, team.id, 'owned-draft', DocumentStatus.DRAFT);
|
||||
|
||||
// A TEMPLATE — orphan only re-parents DOCUMENT envelopes, so it is hard-deleted.
|
||||
const template = await seedBlankDocument(user, team.id, { key: 'owned-template' });
|
||||
await prisma.envelope.update({
|
||||
where: { id: template.id },
|
||||
data: { type: EnvelopeType.TEMPLATE },
|
||||
});
|
||||
|
||||
expect(await prisma.envelope.count({ where: { teamId: team.id } })).toBe(5);
|
||||
|
||||
await deleteAccountViaUi(page, user.email);
|
||||
|
||||
await waitForOrganisationToBeGone(organisation.id);
|
||||
|
||||
const service = await getDeletedServiceAccount();
|
||||
|
||||
// Completed/pending/rejected: re-parented to the service account + soft-deleted.
|
||||
for (const original of [completed, pending, rejected]) {
|
||||
const after = await prisma.envelope.findUnique({
|
||||
where: { id: original.id },
|
||||
select: { id: true, teamId: true, userId: true, deletedAt: true },
|
||||
});
|
||||
|
||||
expect(after, `envelope ${original.id} should survive as an orphan`).not.toBeNull();
|
||||
expect(after?.teamId).toBe(service.teamId);
|
||||
expect(after?.userId).toBe(service.id);
|
||||
expect(after?.deletedAt).not.toBeNull();
|
||||
}
|
||||
|
||||
// Draft + template are hard-deleted.
|
||||
expect(await prisma.envelope.findUnique({ where: { id: draft.id } })).toBeNull();
|
||||
expect(await prisma.envelope.findUnique({ where: { id: template.id } })).toBeNull();
|
||||
|
||||
// The owned org, its team, and the user are gone. Nothing references the old team.
|
||||
expect(await prisma.organisation.findUnique({ where: { id: organisation.id } })).toBeNull();
|
||||
expect(await prisma.team.findUnique({ where: { id: team.id } })).toBeNull();
|
||||
expect(await prisma.user.findUnique({ where: { id: user.id } })).toBeNull();
|
||||
expect(await prisma.envelope.count({ where: { teamId: team.id } })).toBe(0);
|
||||
});
|
||||
|
||||
// ─── Member of another org: documents transferred to the OWNER, not deleted ──
|
||||
|
||||
test('[USER][DELETE_ACCOUNT]: docs in orgs the user is a member of are transferred to the org owner', async ({
|
||||
page,
|
||||
}) => {
|
||||
// Another org, owned by someone else, that the deleted user is merely a member of.
|
||||
const { user: ownerB, organisation: orgB, team: teamB } = await seedUser();
|
||||
|
||||
// The account being deleted. They own their own (personal) org too.
|
||||
const { user: userA, organisation: orgA, team: teamA } = await seedUser();
|
||||
|
||||
await seedOrganisationMembers({
|
||||
organisationId: orgB.id,
|
||||
members: [{ email: userA.email, name: userA.name ?? 'User A', organisationRole: 'MEMBER' }],
|
||||
});
|
||||
|
||||
// userA authors envelopes inside orgB's team (both completed and draft).
|
||||
const memberCompleted = await seedDocumentWithStatus(userA, teamB.id, 'member-completed', DocumentStatus.COMPLETED);
|
||||
const memberDraft = await seedDocumentWithStatus(userA, teamB.id, 'member-draft', DocumentStatus.DRAFT);
|
||||
|
||||
// userA also has a completed doc in their OWN org (should orphan to service account).
|
||||
const ownedCompleted = await seedDocumentWithStatus(userA, teamA.id, 'owned-completed', DocumentStatus.COMPLETED);
|
||||
|
||||
await deleteAccountViaUi(page, userA.email);
|
||||
|
||||
await waitForOrganisationToBeGone(orgA.id);
|
||||
|
||||
const service = await getDeletedServiceAccount();
|
||||
|
||||
// Member-org envelopes — regardless of status — are reassigned to orgB's owner,
|
||||
// stay in orgB's team, and are NOT soft-deleted.
|
||||
for (const original of [memberCompleted, memberDraft]) {
|
||||
const after = await prisma.envelope.findUnique({
|
||||
where: { id: original.id },
|
||||
select: { id: true, teamId: true, userId: true, deletedAt: true },
|
||||
});
|
||||
|
||||
expect(after, `member envelope ${original.id} should be transferred, not deleted`).not.toBeNull();
|
||||
expect(after?.teamId).toBe(teamB.id);
|
||||
expect(after?.userId).toBe(ownerB.id);
|
||||
expect(after?.deletedAt).toBeNull();
|
||||
}
|
||||
|
||||
// The other org and its owner survive — only the deleted user's own org is removed.
|
||||
expect(await prisma.organisation.findUnique({ where: { id: orgB.id } })).not.toBeNull();
|
||||
expect(await prisma.user.findUnique({ where: { id: ownerB.id } })).not.toBeNull();
|
||||
|
||||
// The deleted user's own completed doc was orphaned to the service account.
|
||||
const ownedAfter = await prisma.envelope.findUnique({
|
||||
where: { id: ownedCompleted.id },
|
||||
select: { teamId: true, userId: true, deletedAt: true },
|
||||
});
|
||||
expect(ownedAfter, 'owned-org envelope should survive as an orphan').not.toBeNull();
|
||||
expect(ownedAfter?.teamId).toBe(service.teamId);
|
||||
expect(ownedAfter?.userId).toBe(service.id);
|
||||
expect(ownedAfter?.deletedAt).not.toBeNull();
|
||||
|
||||
// userA is gone.
|
||||
expect(await prisma.user.findUnique({ where: { id: userA.id } })).toBeNull();
|
||||
});
|
||||
|
||||
// ─── Owned org with members: org torn down, members survive, their docs orphaned ─
|
||||
|
||||
test('[USER][DELETE_ACCOUNT]: deleting the owner removes the org but keeps members and orphans their docs', async ({
|
||||
page,
|
||||
}) => {
|
||||
const { user: owner, organisation, team } = await seedUser();
|
||||
|
||||
const [member] = await seedOrganisationMembers({
|
||||
organisationId: organisation.id,
|
||||
members: [{ organisationRole: 'MEMBER' }],
|
||||
});
|
||||
|
||||
// A member (not the owner) authored a completed doc inside the owned org's team.
|
||||
// The orphan logic filters by teamId only, so this must be orphaned too.
|
||||
const memberCompleted = await seedDocumentWithStatus(member, team.id, 'member-completed', DocumentStatus.COMPLETED);
|
||||
|
||||
await deleteAccountViaUi(page, owner.email);
|
||||
|
||||
await waitForOrganisationToBeGone(organisation.id);
|
||||
|
||||
const service = await getDeletedServiceAccount();
|
||||
|
||||
const after = await prisma.envelope.findUnique({
|
||||
where: { id: memberCompleted.id },
|
||||
select: { teamId: true, userId: true, deletedAt: true },
|
||||
});
|
||||
expect(after, 'member-authored envelope should survive as an orphan').not.toBeNull();
|
||||
expect(after?.teamId).toBe(service.teamId);
|
||||
expect(after?.userId).toBe(service.id);
|
||||
expect(after?.deletedAt).not.toBeNull();
|
||||
|
||||
// The member user survives — only the org and its owner are removed.
|
||||
expect(await prisma.user.findUnique({ where: { id: member.id } })).not.toBeNull();
|
||||
expect(await prisma.organisation.findUnique({ where: { id: organisation.id } })).toBeNull();
|
||||
expect(await prisma.user.findUnique({ where: { id: owner.id } })).toBeNull();
|
||||
});
|
||||
|
||||
// ─── Subscription cancellation is scheduled for owned orgs ───────────────────
|
||||
|
||||
test('[USER][DELETE_ACCOUNT]: a cancel-subscription job is enqueued for an owned org that has a subscription', async ({
|
||||
page,
|
||||
}) => {
|
||||
const { user, organisation } = await seedUser();
|
||||
|
||||
const planId = `sub_e2e_${nanoid()}`;
|
||||
|
||||
await prisma.subscription.create({
|
||||
data: {
|
||||
status: SubscriptionStatus.ACTIVE,
|
||||
planId,
|
||||
priceId: `price_e2e_${nanoid()}`,
|
||||
customerId: `cus_e2e_${nanoid()}`,
|
||||
organisationId: organisation.id,
|
||||
},
|
||||
});
|
||||
|
||||
await deleteAccountViaUi(page, user.email);
|
||||
|
||||
await waitForOrganisationToBeGone(organisation.id);
|
||||
|
||||
// The deletion must schedule the Stripe subscription cancellation job with the
|
||||
// captured planId (the Subscription row itself cascades away with the org).
|
||||
await expect
|
||||
.poll(
|
||||
async () => {
|
||||
const job = await prisma.backgroundJob.findFirst({
|
||||
where: {
|
||||
jobId: 'internal.cancel-organisation-subscription',
|
||||
payload: { path: ['organisationId'], equals: organisation.id },
|
||||
},
|
||||
});
|
||||
|
||||
if (!job) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (job.payload as { stripeSubscriptionId?: string }).stripeSubscriptionId ?? null;
|
||||
},
|
||||
{
|
||||
message: 'cancel-organisation-subscription job was not enqueued',
|
||||
timeout: 15_000,
|
||||
intervals: [250, 500, 1000],
|
||||
},
|
||||
)
|
||||
.toBe(planId);
|
||||
|
||||
// The local Subscription row cascades away with the organisation — which is
|
||||
// exactly why the planId has to be captured into the job payload beforehand.
|
||||
expect(await prisma.subscription.findUnique({ where: { planId } })).toBeNull();
|
||||
});
|
||||
|
||||
// ─── Owned org account (SSO) rows are cleaned up, members survive ────────────
|
||||
|
||||
test('[USER][DELETE_ACCOUNT]: org-linked account rows are removed when an owned org is torn down', async ({ page }) => {
|
||||
const { user: owner, organisation } = await seedUser();
|
||||
|
||||
const [member] = await seedOrganisationMembers({
|
||||
organisationId: organisation.id,
|
||||
members: [{ organisationRole: 'MEMBER' }],
|
||||
});
|
||||
|
||||
// Simulate a member who linked their login through the organisation's SSO.
|
||||
// These rows are keyed by `provider = organisation.id` and have no foreign key
|
||||
// to the organisation, so they must be deleted explicitly during teardown.
|
||||
const orgAccount = await prisma.account.create({
|
||||
data: {
|
||||
userId: member.id,
|
||||
type: ORGANISATION_USER_ACCOUNT_TYPE,
|
||||
provider: organisation.id,
|
||||
providerAccountId: `oidc-${nanoid()}`,
|
||||
},
|
||||
});
|
||||
|
||||
await deleteAccountViaUi(page, owner.email);
|
||||
|
||||
await waitForOrganisationToBeGone(organisation.id);
|
||||
|
||||
// The org-linked account row is gone...
|
||||
expect(await prisma.account.findUnique({ where: { id: orgAccount.id } })).toBeNull();
|
||||
expect(
|
||||
await prisma.account.count({
|
||||
where: { type: ORGANISATION_USER_ACCOUNT_TYPE, provider: organisation.id },
|
||||
}),
|
||||
).toBe(0);
|
||||
|
||||
// ...but the member user it belonged to survives (only the org + owner are removed).
|
||||
expect(await prisma.user.findUnique({ where: { id: member.id } })).not.toBeNull();
|
||||
expect(await prisma.user.findUnique({ where: { id: owner.id } })).toBeNull();
|
||||
});
|
||||
|
||||
// ─── Sad path: no subscription means no cancel job is enqueued ────────────────
|
||||
|
||||
test('[USER][DELETE_ACCOUNT]: no cancel-subscription job is enqueued when the owned org has no subscription', async ({
|
||||
page,
|
||||
}) => {
|
||||
const { user, organisation } = await seedUser();
|
||||
|
||||
await deleteAccountViaUi(page, user.email);
|
||||
|
||||
await waitForOrganisationToBeGone(organisation.id);
|
||||
|
||||
const job = await prisma.backgroundJob.findFirst({
|
||||
where: {
|
||||
jobId: 'internal.cancel-organisation-subscription',
|
||||
payload: { path: ['organisationId'], equals: organisation.id },
|
||||
},
|
||||
});
|
||||
|
||||
expect(job).toBeNull();
|
||||
});
|
||||
|
||||
// ─── Sad path: a mismatched confirmation email leaves everything intact ───────
|
||||
|
||||
test('[USER][DELETE_ACCOUNT]: a wrong confirmation email keeps the account, org and documents intact', async ({
|
||||
page,
|
||||
}) => {
|
||||
const { user, organisation, team } = await seedUser();
|
||||
|
||||
const completed = await seedDocumentWithStatus(user, team.id, 'kept-completed', DocumentStatus.COMPLETED);
|
||||
|
||||
await apiSignin({ page, email: user.email, redirectPath: '/settings' });
|
||||
|
||||
await page.getByRole('button', { name: 'Delete Account' }).click();
|
||||
await page.getByLabel('Confirm Email').fill('not-my-email@example.com');
|
||||
|
||||
// The confirm button stays disabled while the email does not match.
|
||||
await expect(page.getByRole('button', { name: 'Confirm Deletion' })).toBeDisabled();
|
||||
|
||||
// Nothing was deleted or orphaned.
|
||||
expect(await prisma.user.findUnique({ where: { id: user.id } })).not.toBeNull();
|
||||
expect(await prisma.organisation.findUnique({ where: { id: organisation.id } })).not.toBeNull();
|
||||
|
||||
const docAfter = await prisma.envelope.findUnique({
|
||||
where: { id: completed.id },
|
||||
select: { teamId: true, userId: true, deletedAt: true },
|
||||
});
|
||||
expect(docAfter?.teamId).toBe(team.id);
|
||||
expect(docAfter?.userId).toBe(user.id);
|
||||
expect(docAfter?.deletedAt).toBeNull();
|
||||
});
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
import { Img, Link } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { getSafeBrandingUrl } from '../utils/branding-url';
|
||||
|
||||
export type TemplateBrandingLogoProps = {
|
||||
assetBaseUrl: string;
|
||||
className?: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Renders the email logo.
|
||||
*
|
||||
* - When custom branding is enabled with a logo, the branding logo is shown.
|
||||
* If a safe (http/https) Brand Website is configured, the logo links to it.
|
||||
* - Otherwise the Documenso logo is shown.
|
||||
*/
|
||||
export const TemplateBrandingLogo = ({ assetBaseUrl, className = 'mb-4 h-6' }: TemplateBrandingLogoProps) => {
|
||||
const branding = useBranding();
|
||||
|
||||
const hasCustomBrandingLogo = branding.brandingEnabled && Boolean(branding.brandingLogo);
|
||||
|
||||
if (!hasCustomBrandingLogo) {
|
||||
const documensoLogoUrl = new URL('/static/logo.png', assetBaseUrl).toString();
|
||||
|
||||
return <Img src={documensoLogoUrl} alt="Documenso Logo" className={className} />;
|
||||
}
|
||||
|
||||
const brandingLogo = <Img src={branding.brandingLogo} alt="Branding Logo" className={className} />;
|
||||
|
||||
const safeBrandingUrl = getSafeBrandingUrl(branding.brandingUrl);
|
||||
|
||||
if (!safeBrandingUrl) {
|
||||
return brandingLogo;
|
||||
}
|
||||
|
||||
return (
|
||||
<Link href={safeBrandingUrl} target="_blank">
|
||||
{brandingLogo}
|
||||
</Link>
|
||||
);
|
||||
};
|
||||
|
||||
export default TemplateBrandingLogo;
|
||||
@@ -2,6 +2,7 @@ import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { Link, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { getSafeBrandingUrl } from '../utils/branding-url';
|
||||
|
||||
export type TemplateFooterProps = {
|
||||
isDocument?: boolean;
|
||||
@@ -11,6 +12,8 @@ export type TemplateFooterProps = {
|
||||
export const TemplateFooter = ({ isDocument = true, reportUrl }: TemplateFooterProps) => {
|
||||
const branding = useBranding();
|
||||
|
||||
const safeBrandingUrl = branding.brandingEnabled ? getSafeBrandingUrl(branding.brandingUrl) : null;
|
||||
|
||||
return (
|
||||
<Section>
|
||||
{reportUrl && (
|
||||
@@ -50,6 +53,14 @@ export const TemplateFooter = ({ isDocument = true, reportUrl }: TemplateFooterP
|
||||
</Text>
|
||||
)}
|
||||
|
||||
{branding.brandingEnabled && safeBrandingUrl && (
|
||||
<Text className="my-8 text-slate-400 text-sm">
|
||||
<Link href={safeBrandingUrl} target="_blank">
|
||||
{safeBrandingUrl}
|
||||
</Link>
|
||||
</Text>
|
||||
)}
|
||||
|
||||
{!branding.brandingEnabled && (
|
||||
<Text className="my-8 text-slate-400 text-sm">
|
||||
Documenso, Inc.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Html, Preview, Section } from '../components';
|
||||
import { TemplateAccessAuth2FA } from '../template-components/template-access-auth-2fa';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
|
||||
export type AccessAuth2FAEmailTemplateProps = {
|
||||
@@ -25,14 +25,8 @@ export const AccessAuth2FAEmailTemplate = ({
|
||||
}: AccessAuth2FAEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Your verification code is ${code}`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -42,11 +36,7 @@ export const AccessAuth2FAEmailTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateAccessAuth2FA
|
||||
documentTitle={documentTitle}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import type { TemplateConfirmationEmailProps } from '../template-components/template-confirmation-email';
|
||||
import { TemplateConfirmationEmail } from '../template-components/template-confirmation-email';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
@@ -12,14 +12,9 @@ export const ConfirmEmailTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: TemplateConfirmationEmailProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Please confirm your email address`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -28,11 +23,7 @@ export const ConfirmEmailTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateConfirmationEmail confirmationLink={confirmationLink} assetBaseUrl={assetBaseUrl} />
|
||||
</Section>
|
||||
|
||||
@@ -3,8 +3,8 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { Body, Button, Container, Head, Hr, Html, Img, Link, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Button, Container, Head, Hr, Html, Link, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import TemplateImage from '../template-components/template-image';
|
||||
|
||||
@@ -24,7 +24,6 @@ export const ConfirmTeamEmailTemplate = ({
|
||||
token = '',
|
||||
}: ConfirmTeamEmailProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Accept team email request for ${teamName} on Documenso`;
|
||||
|
||||
@@ -36,11 +35,7 @@ export const ConfirmTeamEmailTemplate = ({
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid px-2 pt-2 backdrop-blur-sm">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6 p-2" />
|
||||
) : (
|
||||
<TemplateImage assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" staticAsset="logo.png" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" />
|
||||
|
||||
<Section>
|
||||
<TemplateImage className="mx-auto" assetBaseUrl={assetBaseUrl} staticAsset="mail-open.png" />
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import type { TemplateDocumentCancelProps } from '../template-components/template-document-cancel';
|
||||
import { TemplateDocumentCancel } from '../template-components/template-document-cancel';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
@@ -17,14 +17,9 @@ export const DocumentCancelTemplate = ({
|
||||
cancellationReason,
|
||||
}: DocumentCancelEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`${inviterName} has cancelled the document ${documentName}, you don't need to sign it anymore.`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -34,11 +29,7 @@ export const DocumentCancelTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentCancel
|
||||
inviterName={inviterName}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import type { TemplateDocumentCompletedProps } from '../template-components/template-document-completed';
|
||||
import { TemplateDocumentCompleted } from '../template-components/template-document-completed';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
@@ -20,14 +20,9 @@ export const DocumentCompletedEmailTemplate = ({
|
||||
reportUrl,
|
||||
}: DocumentCompletedEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Completed Document`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -37,11 +32,7 @@ export const DocumentCompletedEmailTemplate = ({
|
||||
<Section className="bg-white">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
<Section className="p-2">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentCompleted
|
||||
downloadLink={downloadLink}
|
||||
|
||||
@@ -4,8 +4,8 @@ import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
import { RecipientRole } from '@prisma/client';
|
||||
|
||||
import { Body, Button, Container, Head, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Button, Container, Head, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import TemplateDocumentImage from '../template-components/template-document-image';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
|
||||
@@ -25,16 +25,11 @@ export const DocumentCreatedFromDirectTemplateEmailTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: DocumentCompletedEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const action = _(RECIPIENT_ROLES_DESCRIPTION[recipientRole].actioned).toLowerCase();
|
||||
|
||||
const previewText = msg`Document created from direct template`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -44,11 +39,7 @@ export const DocumentCreatedFromDirectTemplateEmailTemplate = ({
|
||||
<Section className="bg-white">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
<Section className="p-2">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentImage className="mt-6" assetBaseUrl={assetBaseUrl} />
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ import { Trans } from '@lingui/react/macro';
|
||||
import type { RecipientRole } from '@prisma/client';
|
||||
import { OrganisationType } from '@prisma/client';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Link, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Link, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateCustomMessageBody } from '../template-components/template-custom-message-body';
|
||||
import type { TemplateDocumentInviteProps } from '../template-components/template-document-invite';
|
||||
import { TemplateDocumentInvite } from '../template-components/template-document-invite';
|
||||
@@ -38,7 +38,6 @@ export const DocumentInviteEmailTemplate = ({
|
||||
reportUrl,
|
||||
}: DocumentInviteEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const action = _(RECIPIENT_ROLES_DESCRIPTION[role].actionVerb).toLowerCase();
|
||||
|
||||
@@ -54,10 +53,6 @@ export const DocumentInviteEmailTemplate = ({
|
||||
previewText = msg`Please ${action} your document ${documentName}`;
|
||||
}
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -67,11 +62,7 @@ export const DocumentInviteEmailTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentInvite
|
||||
inviterName={inviterName}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import type { TemplateDocumentPendingProps } from '../template-components/template-document-pending';
|
||||
import { TemplateDocumentPending } from '../template-components/template-document-pending';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
@@ -14,14 +14,9 @@ export const DocumentPendingEmailTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: DocumentPendingEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Pending Document`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -31,11 +26,7 @@ export const DocumentPendingEmailTemplate = ({
|
||||
<Section className="bg-white">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentPending documentName={documentName} assetBaseUrl={assetBaseUrl} />
|
||||
</Section>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateDocumentRecipientSigned } from '../template-components/template-document-recipient-signed';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
|
||||
@@ -20,16 +20,11 @@ export const DocumentRecipientSignedEmailTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: DocumentRecipientSignedEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const recipientReference = recipientName || recipientEmail;
|
||||
|
||||
const previewText = msg`${recipientReference} has signed ${documentName}`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -39,11 +34,7 @@ export const DocumentRecipientSignedEmailTemplate = ({
|
||||
<Section className="bg-white">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
<Section className="p-2">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentRecipientSigned
|
||||
documentName={documentName}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateDocumentRejected } from '../template-components/template-document-rejected';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
|
||||
@@ -22,14 +22,9 @@ export function DocumentRejectedEmail({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: DocumentRejectedEmailProps) {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = _(msg`${recipientName} has rejected the document '${documentName}'`);
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -39,11 +34,7 @@ export function DocumentRejectedEmail({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentRejected
|
||||
recipientName={recipientName}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateDocumentRejectionConfirmed } from '../template-components/template-document-rejection-confirmed';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
|
||||
@@ -22,14 +22,9 @@ export function DocumentRejectionConfirmedEmail({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: DocumentRejectionConfirmedEmailProps) {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = _(msg`You have rejected the document '${documentName}'`);
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -39,11 +34,7 @@ export function DocumentRejectionConfirmedEmail({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentRejectionConfirmed
|
||||
recipientName={recipientName}
|
||||
|
||||
@@ -3,8 +3,8 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { RecipientRole } from '@prisma/client';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateCustomMessageBody } from '../template-components/template-custom-message-body';
|
||||
import { TemplateDocumentReminder } from '../template-components/template-document-reminder';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
@@ -29,16 +29,11 @@ export const DocumentReminderEmailTemplate = ({
|
||||
reportUrl,
|
||||
}: DocumentReminderEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const action = _(RECIPIENT_ROLES_DESCRIPTION[role].actionVerb).toLowerCase();
|
||||
|
||||
const previewText = msg`Reminder to ${action} ${documentName}`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -48,11 +43,7 @@ export const DocumentReminderEmailTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentReminder
|
||||
recipientName={recipientName}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import type { TemplateDocumentSelfSignedProps } from '../template-components/template-document-self-signed';
|
||||
import { TemplateDocumentSelfSigned } from '../template-components/template-document-self-signed';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
@@ -14,14 +14,9 @@ export const DocumentSelfSignedEmailTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: DocumentSelfSignedTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Completed Document`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -31,11 +26,7 @@ export const DocumentSelfSignedEmailTemplate = ({
|
||||
<Section className="bg-white">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
<Section className="p-2">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentSelfSigned documentName={documentName} assetBaseUrl={assetBaseUrl} />
|
||||
</Section>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import {
|
||||
TemplateDocumentDelete,
|
||||
type TemplateDocumentDeleteProps,
|
||||
@@ -17,14 +17,9 @@ export const DocumentSuperDeleteEmailTemplate = ({
|
||||
reason = 'Unknown',
|
||||
}: DocumentDeleteEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`An admin has deleted your document "${documentName}".`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -34,11 +29,7 @@ export const DocumentSuperDeleteEmailTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentDelete reason={reason} documentName={documentName} assetBaseUrl={assetBaseUrl} />
|
||||
</Section>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import type { TemplateForgotPasswordProps } from '../template-components/template-forgot-password';
|
||||
import { TemplateForgotPassword } from '../template-components/template-forgot-password';
|
||||
@@ -14,14 +14,9 @@ export const ForgotPasswordTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: ForgotPasswordTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Password Reset Requested`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -31,11 +26,7 @@ export const ForgotPasswordTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateForgotPassword resetPasswordLink={resetPasswordLink} assetBaseUrl={assetBaseUrl} />
|
||||
</Section>
|
||||
|
||||
@@ -2,8 +2,8 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { Body, Button, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Button, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import TemplateImage from '../template-components/template-image';
|
||||
|
||||
@@ -21,7 +21,6 @@ export const OrganisationAccountLinkConfirmationTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: OrganisationAccountLinkConfirmationTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText =
|
||||
type === 'create'
|
||||
@@ -35,11 +34,7 @@ export const OrganisationAccountLinkConfirmationTemplate = ({
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid px-2 pt-2 backdrop-blur-sm">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6 p-2" />
|
||||
) : (
|
||||
<TemplateImage assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" staticAsset="logo.png" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" />
|
||||
|
||||
<Section>
|
||||
<TemplateImage className="mx-auto h-12 w-12" assetBaseUrl={assetBaseUrl} staticAsset="building-2.png" />
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import TemplateImage from '../template-components/template-image';
|
||||
|
||||
@@ -22,7 +22,6 @@ export const OrganisationDeleteEmailTemplate = ({
|
||||
deletedByAdmin = false,
|
||||
}: OrganisationDeleteEmailProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Your organisation has been deleted`;
|
||||
|
||||
@@ -40,11 +39,7 @@ export const OrganisationDeleteEmailTemplate = ({
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white text-slate-500">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6 p-2" />
|
||||
) : (
|
||||
<TemplateImage assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" staticAsset="logo.png" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" />
|
||||
|
||||
<Section>
|
||||
<TemplateImage className="mx-auto" assetBaseUrl={assetBaseUrl} staticAsset="delete-team.png" />
|
||||
|
||||
@@ -2,8 +2,8 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { Body, Button, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Button, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import TemplateImage from '../template-components/template-image';
|
||||
|
||||
@@ -23,7 +23,6 @@ export const OrganisationInviteEmailTemplate = ({
|
||||
token = '',
|
||||
}: OrganisationInviteEmailProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Accept invitation to join an organisation on Documenso`;
|
||||
|
||||
@@ -35,11 +34,7 @@ export const OrganisationInviteEmailTemplate = ({
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white text-slate-500">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6 p-2" />
|
||||
) : (
|
||||
<TemplateImage assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" staticAsset="logo.png" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" />
|
||||
|
||||
<Section>
|
||||
<TemplateImage className="mx-auto" assetBaseUrl={assetBaseUrl} staticAsset="add-user.png" />
|
||||
|
||||
@@ -2,8 +2,8 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import TemplateImage from '../template-components/template-image';
|
||||
|
||||
@@ -25,7 +25,6 @@ export const OrganisationJoinEmailTemplate = ({
|
||||
organisationUrl = 'demo',
|
||||
}: OrganisationJoinEmailProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`A member has joined your organisation on Documenso`;
|
||||
|
||||
@@ -37,11 +36,7 @@ export const OrganisationJoinEmailTemplate = ({
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white text-slate-500">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6 p-2" />
|
||||
) : (
|
||||
<TemplateImage assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" staticAsset="logo.png" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" />
|
||||
|
||||
<Section>
|
||||
<TemplateImage className="mx-auto" assetBaseUrl={assetBaseUrl} staticAsset="add-user.png" />
|
||||
|
||||
@@ -2,8 +2,8 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import TemplateImage from '../template-components/template-image';
|
||||
|
||||
@@ -25,7 +25,6 @@ export const OrganisationLeaveEmailTemplate = ({
|
||||
organisationUrl = 'demo',
|
||||
}: OrganisationLeaveEmailProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`A member has left your organisation on Documenso`;
|
||||
|
||||
@@ -37,11 +36,7 @@ export const OrganisationLeaveEmailTemplate = ({
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white text-slate-500">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6 p-2" />
|
||||
) : (
|
||||
<TemplateImage assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" staticAsset="logo.png" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" />
|
||||
|
||||
<Section>
|
||||
<TemplateImage className="mx-auto" assetBaseUrl={assetBaseUrl} staticAsset="delete-user.png" />
|
||||
|
||||
@@ -3,10 +3,9 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
import { match } from 'ts-pattern';
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import TemplateImage from '../template-components/template-image';
|
||||
|
||||
export type OrganisationLimitExceededEmailProps = {
|
||||
assetBaseUrl: string;
|
||||
@@ -24,7 +23,6 @@ export const OrganisationLimitExceededEmailTemplate = ({
|
||||
period = '2026-05',
|
||||
}: OrganisationLimitExceededEmailProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Organisation Review Required`;
|
||||
|
||||
@@ -36,11 +34,7 @@ export const OrganisationLimitExceededEmailTemplate = ({
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white text-slate-500">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6 p-2" />
|
||||
) : (
|
||||
<TemplateImage assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" staticAsset="logo.png" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" />
|
||||
|
||||
<Section className="p-2 text-slate-500">
|
||||
<Text className="text-center font-medium text-black text-lg">
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import type { TemplateRecipientExpiredProps } from '../template-components/template-recipient-expired';
|
||||
import { TemplateRecipientExpired } from '../template-components/template-recipient-expired';
|
||||
@@ -17,14 +17,9 @@ export const RecipientExpiredTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: RecipientExpiredEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`The signing window for "${recipientName}" on document "${documentName}" has expired.`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -34,11 +29,7 @@ export const RecipientExpiredTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateRecipientExpired
|
||||
documentName={documentName}
|
||||
|
||||
@@ -2,8 +2,8 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import type { TemplateDocumentCancelProps } from '../template-components/template-document-cancel';
|
||||
import TemplateDocumentImage from '../template-components/template-document-image';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
@@ -16,14 +16,9 @@ export const RecipientRemovedFromDocumentTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: DocumentCancelEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`${inviterName} has removed you from the document ${documentName}.`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -33,11 +28,7 @@ export const RecipientRemovedFromDocumentTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateDocumentImage className="mt-6" assetBaseUrl={assetBaseUrl} />
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Link, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Link, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import type { TemplateResetPasswordProps } from '../template-components/template-reset-password';
|
||||
import { TemplateResetPassword } from '../template-components/template-reset-password';
|
||||
@@ -16,14 +16,9 @@ export const ResetPasswordTemplate = ({
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: ResetPasswordTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Password Reset Successful`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
@@ -33,11 +28,7 @@ export const ResetPasswordTemplate = ({
|
||||
<Section>
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-4 backdrop-blur-sm">
|
||||
<Section>
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img src={getAssetUrl('/static/logo.png')} alt="Documenso Logo" className="mb-4 h-6" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6" />
|
||||
|
||||
<TemplateResetPassword userName={userName} userEmail={userEmail} assetBaseUrl={assetBaseUrl} />
|
||||
</Section>
|
||||
|
||||
@@ -2,8 +2,8 @@ import { formatTeamUrl } from '@documenso/lib/utils/teams';
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import TemplateImage from '../template-components/template-image';
|
||||
|
||||
@@ -19,7 +19,6 @@ export const TeamDeleteEmailTemplate = ({
|
||||
teamUrl = 'demo',
|
||||
}: TeamDeleteEmailProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`A team you were a part of has been deleted`;
|
||||
|
||||
@@ -35,11 +34,7 @@ export const TeamDeleteEmailTemplate = ({
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white text-slate-500">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid p-2 backdrop-blur-sm">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6 p-2" />
|
||||
) : (
|
||||
<TemplateImage assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" staticAsset="logo.png" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" />
|
||||
|
||||
<Section>
|
||||
<TemplateImage className="mx-auto" assetBaseUrl={assetBaseUrl} staticAsset="delete-team.png" />
|
||||
|
||||
@@ -3,8 +3,8 @@ import { msg } from '@lingui/core/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
|
||||
import { useBranding } from '../providers/branding';
|
||||
import { Body, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
|
||||
import { TemplateBrandingLogo } from '../template-components/template-branding-logo';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
import TemplateImage from '../template-components/template-image';
|
||||
|
||||
@@ -24,7 +24,6 @@ export const TeamEmailRemovedTemplate = ({
|
||||
teamUrl = 'demo',
|
||||
}: TeamEmailRemovedTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const previewText = msg`Team email removed for ${teamName} on Documenso`;
|
||||
|
||||
@@ -36,11 +35,7 @@ export const TeamEmailRemovedTemplate = ({
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white text-slate-500">
|
||||
<Container className="mx-auto mt-8 mb-2 max-w-xl rounded-lg border border-slate-200 border-solid px-2 pt-2 backdrop-blur-sm">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6 p-2" />
|
||||
) : (
|
||||
<TemplateImage assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" staticAsset="logo.png" />
|
||||
)}
|
||||
<TemplateBrandingLogo assetBaseUrl={assetBaseUrl} className="mb-4 h-6 p-2" />
|
||||
|
||||
<Section>
|
||||
<TemplateImage className="mx-auto" assetBaseUrl={assetBaseUrl} staticAsset="mail-open-alert.png" />
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* Returns the normalized Brand Website URL only when it is a safe absolute
|
||||
* http(s) URL.
|
||||
*
|
||||
* Rendering must be defensive because old/imported data can bypass the branding
|
||||
* form validation. Empty, missing, invalid, relative, or non-http(s) values are
|
||||
* treated as no Brand Website.
|
||||
*/
|
||||
export const getSafeBrandingUrl = (brandingUrl: string | null | undefined): string | null => {
|
||||
if (!brandingUrl) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const parsed = URL.parse(brandingUrl);
|
||||
|
||||
if (parsed?.protocol !== 'http:' && parsed?.protocol !== 'https:') {
|
||||
return null;
|
||||
}
|
||||
|
||||
return parsed.href;
|
||||
};
|
||||
@@ -233,13 +233,17 @@ export class BullMQJobProvider extends BaseJobProvider {
|
||||
backgroundJobId?: string;
|
||||
};
|
||||
|
||||
let payload = jobData.payload;
|
||||
|
||||
if (definition.trigger.schema) {
|
||||
const result = definition.trigger.schema.safeParse(jobData.payload);
|
||||
const result = definition.trigger.schema.safeParse(payload);
|
||||
|
||||
if (!result.success) {
|
||||
console.error(`[JOBS]: Payload validation failed for ${definitionId}`, result.error);
|
||||
throw new Error(`Payload validation failed for ${definitionId}`);
|
||||
}
|
||||
|
||||
payload = result.data;
|
||||
}
|
||||
|
||||
const backgroundJobId = jobData.backgroundJobId;
|
||||
@@ -260,11 +264,11 @@ export class BullMQJobProvider extends BaseJobProvider {
|
||||
.catch(() => null);
|
||||
}
|
||||
|
||||
console.log(`[JOBS]: Processing job ${definitionId} with payload`, jobData.payload);
|
||||
console.log(`[JOBS]: Processing job ${definitionId} with payload`, payload);
|
||||
|
||||
try {
|
||||
await definition.handler({
|
||||
payload: jobData.payload,
|
||||
payload,
|
||||
io: this.createJobRunIO(backgroundJobId ?? job.id ?? definitionId),
|
||||
});
|
||||
|
||||
|
||||
@@ -260,15 +260,19 @@ export class LocalJobProvider extends BaseJobProvider {
|
||||
return c.text('Unauthorized', 401);
|
||||
}
|
||||
|
||||
let payload = options.payload;
|
||||
|
||||
if (definition.trigger.schema) {
|
||||
const result = definition.trigger.schema.safeParse(options.payload);
|
||||
const result = definition.trigger.schema.safeParse(payload);
|
||||
|
||||
if (!result.success) {
|
||||
return c.text('Bad request', 400);
|
||||
}
|
||||
|
||||
payload = result.data;
|
||||
}
|
||||
|
||||
console.log(`[JOBS]: Triggering job ${options.name} with payload`, options.payload);
|
||||
console.log(`[JOBS]: Triggering job ${options.name} with payload`, payload);
|
||||
|
||||
let backgroundJob = await prisma.backgroundJob
|
||||
.update({
|
||||
@@ -292,7 +296,7 @@ export class LocalJobProvider extends BaseJobProvider {
|
||||
|
||||
try {
|
||||
await definition.handler({
|
||||
payload: options.payload,
|
||||
payload,
|
||||
io: this.createJobRunIO(jobId),
|
||||
});
|
||||
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
import { ORGANISATION_USER_ACCOUNT_TYPE } from '../../../constants/organisations';
|
||||
import { getEmailContext } from '../../../server-only/email/get-email-context';
|
||||
import { orphanEnvelopes } from '../../../server-only/envelope/orphan-envelopes';
|
||||
import { deleteOrganisation } from '../../../server-only/organisation/delete-organisation';
|
||||
import { sendOrganisationDeleteEmail } from '../../../server-only/organisation/delete-organisation-email';
|
||||
import { jobs } from '../../client';
|
||||
import type { JobRunIO } from '../../client/_internal/job';
|
||||
import type { TAdminDeleteOrganisationJobDefinition } from './admin-delete-organisation';
|
||||
|
||||
@@ -63,32 +61,13 @@ export const run = async ({ payload, io }: { payload: TAdminDeleteOrganisationJo
|
||||
return serializableContext;
|
||||
});
|
||||
|
||||
// 1. Orphan all envelopes for every team.
|
||||
for (const team of organisation.teams) {
|
||||
await io.runTask(`orphan-envelopes--team-${team.id}`, async () => {
|
||||
await orphanEnvelopes({ teamId: team.id });
|
||||
});
|
||||
}
|
||||
|
||||
// 2. Delete the organisation. Matches the transaction in organisation-router/delete-organisation.ts.
|
||||
// 1. Orphan envelopes, delete the organisation, and schedule the Stripe
|
||||
// subscription cancellation. Shared with organisation-router/delete-organisation.ts.
|
||||
await io.runTask('delete-organisation', async () => {
|
||||
await prisma.$transaction(async (tx) => {
|
||||
await tx.account.deleteMany({
|
||||
where: {
|
||||
type: ORGANISATION_USER_ACCOUNT_TYPE,
|
||||
provider: organisation.id,
|
||||
},
|
||||
});
|
||||
|
||||
await tx.organisation.delete({
|
||||
where: {
|
||||
id: organisation.id,
|
||||
},
|
||||
});
|
||||
});
|
||||
await deleteOrganisation({ organisation });
|
||||
});
|
||||
|
||||
// 3. Send the owner notification.
|
||||
// 2. Send the owner notification.
|
||||
if (sendEmailToOwner) {
|
||||
await io.runTask('send-organisation-deleted-email', async () => {
|
||||
await sendOrganisationDeleteEmail({
|
||||
@@ -99,17 +78,4 @@ export const run = async ({ payload, io }: { payload: TAdminDeleteOrganisationJo
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// 4. If the organisation has a Stripe subscription, schedule it to be cancelled at the end of the current billing period.
|
||||
if (organisation.subscription) {
|
||||
const stripeSubscriptionId = organisation.subscription.planId;
|
||||
|
||||
await jobs.triggerJob({
|
||||
name: 'internal.cancel-organisation-subscription',
|
||||
payload: {
|
||||
stripeSubscriptionId,
|
||||
organisationId: organisation.id,
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
import { ORGANISATION_USER_ACCOUNT_TYPE } from '../../constants/organisations';
|
||||
import { jobs } from '../../jobs/client';
|
||||
import { orphanEnvelopes } from '../envelope/orphan-envelopes';
|
||||
|
||||
export type DeleteOrganisationOptions = {
|
||||
organisation: {
|
||||
id: string;
|
||||
teams: { id: number }[];
|
||||
subscription: { planId: string } | null;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Fully tears down an organisation:
|
||||
*
|
||||
* 1. Orphans every team's envelopes (so foreign key constraints don't block the delete).
|
||||
* 2. Removes the organisation's account rows and the organisation itself in a transaction.
|
||||
* 3. Schedules the Stripe subscription to be cancelled at the end of the billing period
|
||||
* (when one exists). The job runs asynchronously so a Stripe outage doesn't block the
|
||||
* delete, and is retried by the job runner if Stripe is temporarily unavailable.
|
||||
*
|
||||
* Authorization must be handled by the caller. This is the shared implementation used by
|
||||
* the organisation delete route, the admin delete-organisation job, and account deletion.
|
||||
*/
|
||||
export const deleteOrganisation = async ({ organisation }: DeleteOrganisationOptions) => {
|
||||
// Orphan all envelopes to get rid of foreign key constraints.
|
||||
await Promise.all(organisation.teams.map(async (team) => orphanEnvelopes({ teamId: team.id })));
|
||||
|
||||
await prisma.$transaction(async (tx) => {
|
||||
await tx.account.deleteMany({
|
||||
where: {
|
||||
type: ORGANISATION_USER_ACCOUNT_TYPE,
|
||||
provider: organisation.id,
|
||||
},
|
||||
});
|
||||
|
||||
await tx.organisation.delete({
|
||||
where: {
|
||||
id: organisation.id,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
if (organisation.subscription) {
|
||||
await jobs.triggerJob({
|
||||
name: 'internal.cancel-organisation-subscription',
|
||||
payload: {
|
||||
stripeSubscriptionId: organisation.subscription.planId,
|
||||
organisationId: organisation.id,
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
import { orphanEnvelopes } from '../envelope/orphan-envelopes';
|
||||
import { deleteOrganisation } from '../organisation/delete-organisation';
|
||||
|
||||
export type DeleteUserOptions = {
|
||||
id: number;
|
||||
@@ -20,6 +20,11 @@ export const deleteUser = async ({ id }: DeleteUserOptions) => {
|
||||
id: true,
|
||||
},
|
||||
},
|
||||
subscription: {
|
||||
select: {
|
||||
planId: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
organisationMember: {
|
||||
@@ -44,9 +49,6 @@ export const deleteUser = async ({ id }: DeleteUserOptions) => {
|
||||
});
|
||||
}
|
||||
|
||||
// Get team IDs from organisations the user owns.
|
||||
const ownedTeamIds = user.ownedOrganisations.flatMap((org) => org.teams.map((team) => team.id));
|
||||
|
||||
// Get team IDs from organisations the user is a member of (but not owner).
|
||||
const memberTeams = user.organisationMember
|
||||
.filter((member) => member.organisation.ownerUserId !== user.id)
|
||||
@@ -57,8 +59,13 @@ export const deleteUser = async ({ id }: DeleteUserOptions) => {
|
||||
})),
|
||||
);
|
||||
|
||||
// For teams where user is the org owner - orphan their envelopes.
|
||||
await Promise.all(ownedTeamIds.map(async (teamId) => orphanEnvelopes({ teamId })));
|
||||
// For organisations the user owns - fully tear them down (orphan envelopes,
|
||||
// delete the organisation, and cancel any Stripe subscription). Without this
|
||||
// the organisations would only cascade away when the user row is deleted,
|
||||
// leaving their subscriptions billing and account rows behind.
|
||||
for (const organisation of user.ownedOrganisations) {
|
||||
await deleteOrganisation({ organisation });
|
||||
}
|
||||
|
||||
// For teams where user is a member (not owner) - transfer envelopes to team owner.
|
||||
await Promise.all(
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-06-03 06:16\n"
|
||||
"PO-Revision-Date: 2026-06-09 05:23\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -405,7 +405,7 @@ msgstr "{maximumEnvelopeItemCount, plural, one {Sie können nicht mehr als # Ele
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}"
|
||||
msgstr ""
|
||||
msgstr "{organisationClaimCount, plural, one {# Organisationsanforderung} other {# Organisationsanforderungen}}"
|
||||
|
||||
#: apps/remix/app/components/general/direct-template/direct-template-page.tsx
|
||||
msgid "{recipientActionVerb} document"
|
||||
@@ -460,7 +460,7 @@ msgstr "{signerName} hat das Dokument \"{documentName}\" abgelehnt."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}"
|
||||
msgstr ""
|
||||
msgstr "{subscriptionClaimCount, plural, one {# Abonnementsanforderung} other {# Abonnementsanforderungen}}"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -1292,7 +1292,7 @@ msgstr "E-Mail-Domain hinzufügen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add Email Transport"
|
||||
msgstr ""
|
||||
msgstr "E-Mail-Transport hinzufügen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "Add fields"
|
||||
@@ -1425,7 +1425,7 @@ msgstr "Fügen Sie diese URL zu den erlaubten Umleitungen Ihres Anbieters hinzu.
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add transport"
|
||||
msgstr ""
|
||||
msgstr "Transport hinzufügen"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Additional brand information to display at the bottom of emails"
|
||||
@@ -1744,7 +1744,7 @@ msgstr "Ein Fehler ist aufgetreten, während der Benutzer deaktiviert wurde."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "An error occurred while distributing the document."
|
||||
msgstr ""
|
||||
msgstr "Beim Verteilen des Dokuments ist ein Fehler aufgetreten."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "An error occurred while enabling direct link signing."
|
||||
@@ -1959,7 +1959,7 @@ msgstr "API"
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
msgstr "API-Schlüssel"
|
||||
|
||||
#: apps/remix/app/components/general/claim-limit-fields.tsx
|
||||
msgid "API rate limits"
|
||||
@@ -1971,7 +1971,7 @@ msgstr "API-Anfragen"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "API requests have been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "API-Anfragen wurden vorübergehend angehalten."
|
||||
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-mobile.tsx
|
||||
@@ -2044,7 +2044,7 @@ msgstr "Sind Sie sicher, dass Sie den folgenden Antrag löschen möchten?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete the following transport?"
|
||||
msgstr ""
|
||||
msgstr "Sind Sie sicher, dass Sie den folgenden Transport löschen möchten?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete this folder?"
|
||||
@@ -2253,7 +2253,7 @@ msgstr "Hintergrundjobs"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Backport email transport"
|
||||
msgstr ""
|
||||
msgstr "E-Mail-Transport zurückportieren"
|
||||
|
||||
#: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
@@ -2615,6 +2615,10 @@ msgstr "Ccers"
|
||||
msgid "Center"
|
||||
msgstr "Zentrum"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Change Field Type"
|
||||
msgstr "Feldtyp ändern"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Change language"
|
||||
msgstr "Sprache ändern"
|
||||
@@ -2912,7 +2916,7 @@ msgstr "Konfigurieren Sie die allgemeinen Einstellungen für die Vorlage."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure notification settings for the document."
|
||||
msgstr ""
|
||||
msgstr "Benachrichtigungseinstellungen für das Dokument konfigurieren."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure security settings for the document."
|
||||
@@ -3564,7 +3568,7 @@ msgstr "Ablehnen"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Default (system mailer)"
|
||||
msgstr ""
|
||||
msgstr "Standard (System-Mailer)"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Default border colour."
|
||||
@@ -3752,7 +3756,7 @@ msgstr "E-Mail-Domain löschen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Delete Email Transport"
|
||||
msgstr ""
|
||||
msgstr "E-Mail-Transport löschen"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Delete Envelope"
|
||||
@@ -4174,7 +4178,7 @@ msgstr "Dokumenterstellung"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Document creation has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Die Dokumenterstellung wurde vorübergehend angehalten."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -4690,7 +4694,7 @@ msgstr "Z. B. 100"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "e.g. Resend (free plans)"
|
||||
msgstr ""
|
||||
msgstr "z. B. Resend (kostenlose Tarife)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
@@ -4708,7 +4712,7 @@ msgstr "Bearbeiten"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Edit Email Transport"
|
||||
msgstr ""
|
||||
msgstr "E-Mail-Transport bearbeiten"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx
|
||||
msgid "Edit Item"
|
||||
@@ -4826,7 +4830,7 @@ msgstr "E-Mail erstellt"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings."
|
||||
msgstr ""
|
||||
msgstr "Die E-Mail-Verteilung muss im Reiter \"Allgemeine Einstellungen\" aktiviert sein, um empfängerbezogene E-Mail-Einstellungen zu konfigurieren."
|
||||
|
||||
#: apps/remix/app/components/general/admin-global-settings-section.tsx
|
||||
msgid "Email document settings"
|
||||
@@ -4915,7 +4919,7 @@ msgstr "E-Mail-Absender"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Email sending has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Der E-Mail-Versand wurde vorübergehend angehalten."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgctxt "Audit log format"
|
||||
@@ -4953,12 +4957,12 @@ msgstr "Unterzeichner per E-Mail benachrichtigen, wenn das Dokument noch aussteh
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Email transport"
|
||||
msgstr ""
|
||||
msgstr "E-Mail-Transport"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Email Transports"
|
||||
msgstr ""
|
||||
msgstr "E-Mail-Transporte"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
|
||||
msgid "Email verification"
|
||||
@@ -5096,7 +5100,7 @@ msgstr "Beigefügte Dokumente"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Endpoint (optional)"
|
||||
msgstr ""
|
||||
msgstr "Endpoint (optional)"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "English"
|
||||
@@ -5462,7 +5466,7 @@ msgstr "Support-Ticket konnte nicht erstellt werden"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Failed to create transport."
|
||||
msgstr ""
|
||||
msgstr "Transport konnte nicht erstellt werden."
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Failed to delete folder"
|
||||
@@ -5474,7 +5478,7 @@ msgstr "Fehler beim Löschen des Abonnementsanspruchs."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Failed to delete transport."
|
||||
msgstr ""
|
||||
msgstr "Transport konnte nicht gelöscht werden."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
|
||||
msgid "Failed to download audit logs. Please try again later."
|
||||
@@ -5518,7 +5522,7 @@ msgstr "Einstellungen konnten nicht gespeichert werden."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Failed to save transport."
|
||||
msgstr ""
|
||||
msgstr "Transport konnte nicht gespeichert werden."
|
||||
|
||||
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
|
||||
msgid "Failed to sign out all sessions"
|
||||
@@ -5579,7 +5583,7 @@ msgstr "Fehlgeschlagen: {failedCount}"
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Fair use limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "Fair-Use-Grenze überschritten"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/components/tables/admin-claims-table.tsx
|
||||
@@ -5669,7 +5673,7 @@ msgstr "Dateigröße überschreitet das Limit von {APP_DOCUMENT_UPLOAD_SIZE_LIMI
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new email transport."
|
||||
msgstr ""
|
||||
msgstr "Füllen Sie die Details aus, um einen neuen E-Mail-Transport zu erstellen."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new subscription claim."
|
||||
@@ -5789,15 +5793,15 @@ msgstr "Französisch"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "Von"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
msgstr "Absenderadresse"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From name"
|
||||
msgstr ""
|
||||
msgstr "Absendername"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
|
||||
#: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx
|
||||
@@ -6074,7 +6078,7 @@ msgstr "Horizontal"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
msgstr "Host"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "How long recipients have to complete this document after it is sent. Uses the team default when set to inherit."
|
||||
@@ -6588,7 +6592,7 @@ msgstr "Leer lassen, um von der Organisation zu erben."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Leave blank to keep current"
|
||||
msgstr ""
|
||||
msgstr "Leer lassen, um den aktuellen Wert beizubehalten"
|
||||
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
msgid "Leave organisation"
|
||||
@@ -6758,7 +6762,7 @@ msgstr "Verwalten Sie ein benutzerdefiniertes SSO-Login-Portal für Ihre Organis
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Manage all email transports"
|
||||
msgstr ""
|
||||
msgstr "Alle E-Mail-Transporte verwalten"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx
|
||||
msgid "Manage all organisations you are currently associated with."
|
||||
@@ -7043,7 +7047,7 @@ msgstr "Empfänger ändern"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Modify the details of the email transport."
|
||||
msgstr ""
|
||||
msgstr "Ändern Sie die Details des E-Mail-Transports."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Modify the details of the subscription claim."
|
||||
@@ -7293,6 +7297,10 @@ msgstr "Für diese Domain sind keine E-Mails konfiguriert."
|
||||
msgid "No features enabled"
|
||||
msgstr "Keine Funktionen aktiviert"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "No field type matching this description was found."
|
||||
msgstr "Kein Feldtyp passend zu dieser Beschreibung gefunden."
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "No fields were detected in your document."
|
||||
msgstr "In Ihrem Dokument wurden keine Felder erkannt."
|
||||
@@ -7483,7 +7491,7 @@ msgstr "Nichts zu tun"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "Benachrichtigungen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-number-field.tsx
|
||||
@@ -7788,7 +7796,7 @@ msgstr "Organisationen, in denen der Benutzer Mitglied ist."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Organisations without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Organisationen ohne Transport verwenden den systemweiten Standard-Mailer."
|
||||
|
||||
#: apps/remix/app/components/general/folder/folder-card.tsx
|
||||
msgid "Organise your documents"
|
||||
@@ -8083,7 +8091,7 @@ msgstr "Platzhalter"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
msgid "Plans without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Tarife ohne Transport verwenden den systemweiten Standard-Mailer."
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -8310,7 +8318,7 @@ msgstr "Polnisch"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
msgstr "Port"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "Portuguese (Brazil)"
|
||||
@@ -9205,7 +9213,7 @@ msgstr "Als Vorlage speichern"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
msgstr "Änderungen speichern"
|
||||
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
@@ -9261,7 +9269,7 @@ msgstr "Nach Name oder E-Mail suchen"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Search by name or from address"
|
||||
msgstr ""
|
||||
msgstr "Nach Name oder Absenderadresse suchen"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
@@ -9336,6 +9344,10 @@ msgstr "Auswählen"
|
||||
msgid "Select a destination for this folder."
|
||||
msgstr "Wählen Sie ein Ziel für diesen Ordner aus."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Select a field type"
|
||||
msgstr "Wähle einen Feldtyp aus"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
msgid "Select a folder to move this document to."
|
||||
msgstr "Wählen Sie einen Ordner, um dieses Dokument zu verschieben."
|
||||
@@ -9549,7 +9561,7 @@ msgstr "Senden"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send a test email using this transport to verify the configuration."
|
||||
msgstr ""
|
||||
msgstr "Senden Sie eine Test-E-Mail mit diesem Transport, um die Konfiguration zu überprüfen."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Send a test webhook with sample data to verify your integration is working correctly."
|
||||
@@ -9609,11 +9621,11 @@ msgstr "Sendestatus"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Send test"
|
||||
msgstr ""
|
||||
msgstr "Test senden"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send Test Email"
|
||||
msgstr ""
|
||||
msgstr "Test-E-Mail senden"
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@@ -9731,11 +9743,11 @@ msgstr "Vorlagen in Ihrem öffentlichen Profil anzeigen, damit Ihre Zielgruppe u
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage"
|
||||
msgstr ""
|
||||
msgstr "Nutzung anzeigen"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage with quotas"
|
||||
msgstr ""
|
||||
msgstr "Nutzung mit Kontingenten anzeigen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
@@ -10737,11 +10749,11 @@ msgstr "Test"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test email sent."
|
||||
msgstr ""
|
||||
msgstr "Test-E-Mail gesendet."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test failed."
|
||||
msgstr ""
|
||||
msgstr "Test fehlgeschlagen."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Test Webhook"
|
||||
@@ -10757,7 +10769,7 @@ msgstr "Test-Webhook gesendet"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "test@example.com"
|
||||
msgstr ""
|
||||
msgstr "test@example.com"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
@@ -11345,7 +11357,7 @@ msgstr "Dieses Dokument wurde von allen Empfängern unterschrieben"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "This document has too many recipients. Please remove some recipients or contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Dieses Dokument hat zu viele Empfänger. Bitte entfernen Sie einige Empfänger oder kontaktieren Sie den Support, wenn Sie mehr benötigen."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
|
||||
msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there."
|
||||
@@ -11406,7 +11418,7 @@ msgstr "Diese E-Mail wird an den Empfänger gesendet, der das Dokument gerade un
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: packages/ui/primitives/document-flow/add-signers.tsx
|
||||
msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Dieser Umschlag kann nicht mehr als {recipientCountLimit} Empfänger haben. Bitte kontaktieren Sie den Support, wenn Sie mehr benötigen."
|
||||
|
||||
#: apps/remix/app/components/embed/embed-paywall.tsx
|
||||
msgid "This feature is not available on your current plan"
|
||||
@@ -11780,7 +11792,7 @@ msgstr "Token nicht gefunden"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Too many recipients"
|
||||
msgstr ""
|
||||
msgstr "Zu viele Empfänger"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
@@ -11821,23 +11833,23 @@ msgstr "Dokumente auf ein anderes Team übertragen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Transport created."
|
||||
msgstr ""
|
||||
msgstr "Transport erstellt."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Transport deleted."
|
||||
msgstr ""
|
||||
msgstr "Transport gelöscht."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type"
|
||||
msgstr ""
|
||||
msgstr "Transporttyp"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type cannot be changed after creation."
|
||||
msgstr ""
|
||||
msgstr "Der Transporttyp kann nach der Erstellung nicht geändert werden."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Transport updated."
|
||||
msgstr ""
|
||||
msgstr "Transport aktualisiert."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
|
||||
@@ -12377,7 +12389,7 @@ msgstr "Verwenden Sie Ihren Passkey zur Authentifizierung"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Used by claims"
|
||||
msgstr ""
|
||||
msgstr "Verwendet von Ansprüchen"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
|
||||
#: apps/remix/app/components/tables/document-logs-table.tsx
|
||||
@@ -12429,7 +12441,7 @@ msgstr "Benutzereinstellungen"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "Benutzername"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
@@ -12728,7 +12740,7 @@ msgstr "Möchten Sie Ihr eigenes öffentliches Profil haben?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Warning, this email transport is currently being used by:"
|
||||
msgstr ""
|
||||
msgstr "Warnung, dieser E-Mail-Transport wird derzeit verwendet von:"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
@@ -13713,7 +13725,7 @@ msgstr "Sie haben Ihr Dokumentenlimit für diesen Monat erreicht. Bitte aktualis
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "You have reached your document limit for this plan. Please upgrade your plan."
|
||||
msgstr ""
|
||||
msgstr "Sie haben Ihr Dokumentenlimit für diesen Tarif erreicht. Bitte aktualisieren Sie Ihren Tarif."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
@@ -14265,15 +14277,15 @@ msgstr "Ihre Organisation wurde erfolgreich aktualisiert."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit"
|
||||
msgstr ""
|
||||
msgstr "Ihre Organisation hat eine Fair-Use-Grenze überschritten."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit. Please contact <0>support</0> to review your plan's limits."
|
||||
msgstr ""
|
||||
msgstr "Ihre Organisation hat eine Fair-Use-Grenze überschritten. Bitte kontaktieren Sie den <0>Support</0>, um die Limits Ihres Tarifs zu überprüfen."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue."
|
||||
msgstr ""
|
||||
msgstr "Ihre Organisation hat die Fair-Use-Grenze Ihres Tarifs erreicht. Bitte kontaktieren Sie den Administrator Ihrer Organisation oder den Support, um fortzufahren."
|
||||
|
||||
#: packages/email/templates/organisation-limit-exceeded.tsx
|
||||
msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled."
|
||||
@@ -14410,3 +14422,4 @@ msgstr "Ihr Verifizierungscode:"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
|
||||
msgid "your-domain.com another-domain.com"
|
||||
msgstr "your-domain.com another-domain.com"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-06-03 06:16\n"
|
||||
"PO-Revision-Date: 2026-06-09 05:23\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -405,7 +405,7 @@ msgstr "{maximumEnvelopeItemCount, plural, one {No puedes subir más de # elemen
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}"
|
||||
msgstr ""
|
||||
msgstr "{organisationClaimCount, plural, one {# reclamación de organización} other {# reclamaciones de organización}}"
|
||||
|
||||
#: apps/remix/app/components/general/direct-template/direct-template-page.tsx
|
||||
msgid "{recipientActionVerb} document"
|
||||
@@ -460,7 +460,7 @@ msgstr "{signerName} ha rechazado el documento \"{documentName}\"."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}"
|
||||
msgstr ""
|
||||
msgstr "{subscriptionClaimCount, plural, one {# reclamación de suscripción} other {# reclamaciones de suscripción}}"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -1292,7 +1292,7 @@ msgstr "Agregar dominio de correo electrónico"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Agregar transporte de correo electrónico"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "Add fields"
|
||||
@@ -1425,7 +1425,7 @@ msgstr "Agrega esta URL a los URI de redirección permitidos de tu proveedor"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add transport"
|
||||
msgstr ""
|
||||
msgstr "Agregar transporte"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Additional brand information to display at the bottom of emails"
|
||||
@@ -1744,7 +1744,7 @@ msgstr "Se produjo un error al deshabilitar al usuario."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "An error occurred while distributing the document."
|
||||
msgstr ""
|
||||
msgstr "Se produjo un error al distribuir el documento."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "An error occurred while enabling direct link signing."
|
||||
@@ -1959,7 +1959,7 @@ msgstr "API"
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
msgstr "Clave API"
|
||||
|
||||
#: apps/remix/app/components/general/claim-limit-fields.tsx
|
||||
msgid "API rate limits"
|
||||
@@ -1971,7 +1971,7 @@ msgstr "Solicitudes de API"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "API requests have been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Las solicitudes a la API se han pausado temporalmente."
|
||||
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-mobile.tsx
|
||||
@@ -2044,7 +2044,7 @@ msgstr "¿Estás seguro de que quieres eliminar la siguiente solicitud?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete the following transport?"
|
||||
msgstr ""
|
||||
msgstr "¿Seguro que quieres eliminar el siguiente transporte?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete this folder?"
|
||||
@@ -2253,7 +2253,7 @@ msgstr "Trabajos en segundo plano"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Backport email transport"
|
||||
msgstr ""
|
||||
msgstr "Retroportar transporte de correo electrónico"
|
||||
|
||||
#: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
@@ -2615,6 +2615,10 @@ msgstr "Ccers"
|
||||
msgid "Center"
|
||||
msgstr "Centro"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Change Field Type"
|
||||
msgstr "Cambiar tipo de campo"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Change language"
|
||||
msgstr "Cambiar idioma"
|
||||
@@ -2912,7 +2916,7 @@ msgstr "Configurar ajustes generales para la plantilla."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure notification settings for the document."
|
||||
msgstr ""
|
||||
msgstr "Configura los ajustes de notificación para el documento."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure security settings for the document."
|
||||
@@ -3564,7 +3568,7 @@ msgstr "Rechazar"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Default (system mailer)"
|
||||
msgstr ""
|
||||
msgstr "Predeterminado (mailer del sistema)"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Default border colour."
|
||||
@@ -3752,7 +3756,7 @@ msgstr "Eliminar dominio de correo"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Delete Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Eliminar transporte de correo electrónico"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Delete Envelope"
|
||||
@@ -4174,7 +4178,7 @@ msgstr "Creación de documento"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Document creation has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "La creación de documentos se ha pausado temporalmente."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -4690,7 +4694,7 @@ msgstr "Ej.: 100"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "e.g. Resend (free plans)"
|
||||
msgstr ""
|
||||
msgstr "p. ej., Resend (planes gratuitos)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
@@ -4708,7 +4712,7 @@ msgstr "Editar"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Edit Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Editar transporte de correo electrónico"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx
|
||||
msgid "Edit Item"
|
||||
@@ -4826,7 +4830,7 @@ msgstr "Correo creado"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings."
|
||||
msgstr ""
|
||||
msgstr "La distribución por correo electrónico debe estar habilitada en la pestaña de configuración general para poder configurar los ajustes relacionados con el correo electrónico de los destinatarios."
|
||||
|
||||
#: apps/remix/app/components/general/admin-global-settings-section.tsx
|
||||
msgid "Email document settings"
|
||||
@@ -4915,7 +4919,7 @@ msgstr "Remitente de correo electrónico"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Email sending has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "El envío de correos electrónicos se ha pausado temporalmente."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgctxt "Audit log format"
|
||||
@@ -4953,12 +4957,12 @@ msgstr "Enviar un correo electrónico al firmante si el documento sigue pendient
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Email transport"
|
||||
msgstr ""
|
||||
msgstr "Transporte de correo electrónico"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Email Transports"
|
||||
msgstr ""
|
||||
msgstr "Transportes de correo electrónico"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
|
||||
msgid "Email verification"
|
||||
@@ -5096,7 +5100,7 @@ msgstr "Documentos adjuntos"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Endpoint (optional)"
|
||||
msgstr ""
|
||||
msgstr "Endpoint (opcional)"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "English"
|
||||
@@ -5462,7 +5466,7 @@ msgstr "No se pudo crear el ticket de soporte"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Failed to create transport."
|
||||
msgstr ""
|
||||
msgstr "No se pudo crear el transporte."
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Failed to delete folder"
|
||||
@@ -5474,7 +5478,7 @@ msgstr "Error al eliminar la reclamación de suscripción."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Failed to delete transport."
|
||||
msgstr ""
|
||||
msgstr "No se pudo eliminar el transporte."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
|
||||
msgid "Failed to download audit logs. Please try again later."
|
||||
@@ -5518,7 +5522,7 @@ msgstr "Fallo al guardar configuraciones."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Failed to save transport."
|
||||
msgstr ""
|
||||
msgstr "No se pudo guardar el transporte."
|
||||
|
||||
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
|
||||
msgid "Failed to sign out all sessions"
|
||||
@@ -5579,7 +5583,7 @@ msgstr "Fallidos: {failedCount}"
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Fair use limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "Se ha superado el límite de uso razonable."
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/components/tables/admin-claims-table.tsx
|
||||
@@ -5669,7 +5673,7 @@ msgstr "El tamaño del archivo excede el límite de {APP_DOCUMENT_UPLOAD_SIZE_LI
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new email transport."
|
||||
msgstr ""
|
||||
msgstr "Completa los detalles para crear un nuevo transporte de correo electrónico."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new subscription claim."
|
||||
@@ -5789,15 +5793,15 @@ msgstr "Francés"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "De"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
msgstr "Dirección del remitente"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From name"
|
||||
msgstr ""
|
||||
msgstr "Nombre del remitente"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
|
||||
#: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx
|
||||
@@ -6074,7 +6078,7 @@ msgstr "Horizontal"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
msgstr "Host"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "How long recipients have to complete this document after it is sent. Uses the team default when set to inherit."
|
||||
@@ -6588,7 +6592,7 @@ msgstr "Deja en blanco para heredar de la organización."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Leave blank to keep current"
|
||||
msgstr ""
|
||||
msgstr "Déjalo en blanco para mantener el actual"
|
||||
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
msgid "Leave organisation"
|
||||
@@ -6758,7 +6762,7 @@ msgstr "Administra un portal de inicio de sesión SSO personalizado para tu orga
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Manage all email transports"
|
||||
msgstr ""
|
||||
msgstr "Gestionar todos los transportes de correo electrónico"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx
|
||||
msgid "Manage all organisations you are currently associated with."
|
||||
@@ -7043,7 +7047,7 @@ msgstr "Modificar destinatarios"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Modify the details of the email transport."
|
||||
msgstr ""
|
||||
msgstr "Modifica los detalles del transporte de correo electrónico."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Modify the details of the subscription claim."
|
||||
@@ -7293,6 +7297,10 @@ msgstr "No hay correos electrónicos configurados para este dominio."
|
||||
msgid "No features enabled"
|
||||
msgstr "Ninguna función habilitada"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "No field type matching this description was found."
|
||||
msgstr "No se encontró ningún tipo de campo que coincidiera con esta descripción."
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "No fields were detected in your document."
|
||||
msgstr "No se detectaron campos en tu documento."
|
||||
@@ -7483,7 +7491,7 @@ msgstr "Nada que hacer"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "Notificaciones"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-number-field.tsx
|
||||
@@ -7788,7 +7796,7 @@ msgstr "Organizaciones de las que el usuario es miembro."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Organisations without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Las organizaciones sin transporte usan el mailer predeterminado del sistema."
|
||||
|
||||
#: apps/remix/app/components/general/folder/folder-card.tsx
|
||||
msgid "Organise your documents"
|
||||
@@ -8083,7 +8091,7 @@ msgstr "Marcador de posición"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
msgid "Plans without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Los planes sin transporte usan el mailer predeterminado del sistema."
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -8310,7 +8318,7 @@ msgstr "Polaco"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
msgstr "Puerto"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "Portuguese (Brazil)"
|
||||
@@ -9205,7 +9213,7 @@ msgstr "Guardar como plantilla"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
msgstr "Guardar cambios"
|
||||
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
@@ -9261,7 +9269,7 @@ msgstr "Buscar por nombre o correo electrónico"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Search by name or from address"
|
||||
msgstr ""
|
||||
msgstr "Buscar por nombre o por dirección del remitente"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
@@ -9336,6 +9344,10 @@ msgstr "Seleccionar"
|
||||
msgid "Select a destination for this folder."
|
||||
msgstr "Selecciona un destino para esta carpeta."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Select a field type"
|
||||
msgstr "Selecciona un tipo de campo"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
msgid "Select a folder to move this document to."
|
||||
msgstr "Selecciona una carpeta para mover este documento."
|
||||
@@ -9549,7 +9561,7 @@ msgstr "Enviar"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send a test email using this transport to verify the configuration."
|
||||
msgstr ""
|
||||
msgstr "Envía un correo de prueba usando este transporte para verificar la configuración."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Send a test webhook with sample data to verify your integration is working correctly."
|
||||
@@ -9609,11 +9621,11 @@ msgstr "Estado de envío"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Send test"
|
||||
msgstr ""
|
||||
msgstr "Enviar prueba"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send Test Email"
|
||||
msgstr ""
|
||||
msgstr "Enviar correo de prueba"
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@@ -9731,11 +9743,11 @@ msgstr "Mostrar plantillas en tu perfil público para que tu audiencia firme y c
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage"
|
||||
msgstr ""
|
||||
msgstr "Mostrar uso"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage with quotas"
|
||||
msgstr ""
|
||||
msgstr "Mostrar uso con cuotas"
|
||||
|
||||
#: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
@@ -10737,11 +10749,11 @@ msgstr "Probar"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test email sent."
|
||||
msgstr ""
|
||||
msgstr "Correo de prueba enviado."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test failed."
|
||||
msgstr ""
|
||||
msgstr "La prueba ha fallado."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Test Webhook"
|
||||
@@ -10757,7 +10769,7 @@ msgstr "Webhook de prueba enviado"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "test@example.com"
|
||||
msgstr ""
|
||||
msgstr "test@example.com"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
@@ -11345,7 +11357,7 @@ msgstr "Este documento ha sido firmado por todos los destinatarios"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "This document has too many recipients. Please remove some recipients or contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Este documento tiene demasiados destinatarios. Elimina algunos destinatarios o contacta con el soporte si necesitas más."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
|
||||
msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there."
|
||||
@@ -11406,7 +11418,7 @@ msgstr "Este correo electrónico se enviará al destinatario que acaba de firmar
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: packages/ui/primitives/document-flow/add-signers.tsx
|
||||
msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Este sobre no puede tener más de {recipientCountLimit} destinatarios. Ponte en contacto con el soporte si necesitas más."
|
||||
|
||||
#: apps/remix/app/components/embed/embed-paywall.tsx
|
||||
msgid "This feature is not available on your current plan"
|
||||
@@ -11780,7 +11792,7 @@ msgstr "Token no encontrado"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Too many recipients"
|
||||
msgstr ""
|
||||
msgstr "Demasiados destinatarios"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
@@ -11821,23 +11833,23 @@ msgstr "Transferir documentos a un equipo diferente"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Transport created."
|
||||
msgstr ""
|
||||
msgstr "Transporte creado."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Transport deleted."
|
||||
msgstr ""
|
||||
msgstr "Transporte eliminado."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type"
|
||||
msgstr ""
|
||||
msgstr "Tipo de transporte"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type cannot be changed after creation."
|
||||
msgstr ""
|
||||
msgstr "El tipo de transporte no se puede cambiar después de su creación."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Transport updated."
|
||||
msgstr ""
|
||||
msgstr "Transporte actualizado."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
|
||||
@@ -12377,7 +12389,7 @@ msgstr "Utilice su clave de acceso para la autenticación"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Used by claims"
|
||||
msgstr ""
|
||||
msgstr "Usado por reclamaciones"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
|
||||
#: apps/remix/app/components/tables/document-logs-table.tsx
|
||||
@@ -12429,7 +12441,7 @@ msgstr "Configuraciones del usuario"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "Nombre de usuario"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
@@ -12728,7 +12740,7 @@ msgstr "¿Quieres tu propio perfil público?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Warning, this email transport is currently being used by:"
|
||||
msgstr ""
|
||||
msgstr "Advertencia, este transporte de correo electrónico está siendo utilizado actualmente por:"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
@@ -13713,7 +13725,7 @@ msgstr "Ha alcanzado su límite de documentos para este mes. Por favor, actualic
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "You have reached your document limit for this plan. Please upgrade your plan."
|
||||
msgstr ""
|
||||
msgstr "Has alcanzado el límite de documentos para este plan. Actualiza tu plan."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
@@ -14265,15 +14277,15 @@ msgstr "Tu organización ha sido actualizada exitosamente."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit"
|
||||
msgstr ""
|
||||
msgstr "Tu organización ha superado el límite de uso razonable."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit. Please contact <0>support</0> to review your plan's limits."
|
||||
msgstr ""
|
||||
msgstr "Tu organización ha superado el límite de uso razonable. Ponte en contacto con el <0>soporte</0> para revisar los límites de tu plan."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue."
|
||||
msgstr ""
|
||||
msgstr "Tu organización ha alcanzado el límite de uso razonable de su plan. Ponte en contacto con el administrador de tu organización o con el soporte para continuar."
|
||||
|
||||
#: packages/email/templates/organisation-limit-exceeded.tsx
|
||||
msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled."
|
||||
@@ -14410,3 +14422,4 @@ msgstr "Su código de verificación:"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
|
||||
msgid "your-domain.com another-domain.com"
|
||||
msgstr "su-dominio.com otro-dominio.com"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-06-03 06:16\n"
|
||||
"PO-Revision-Date: 2026-06-09 05:23\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
@@ -405,7 +405,7 @@ msgstr "{maximumEnvelopeItemCount, plural, one {Vous ne pouvez pas téléverser
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}"
|
||||
msgstr ""
|
||||
msgstr "{organisationClaimCount, plural, one {# demande de validation d’organisation} other {# demandes de validation d’organisation}}"
|
||||
|
||||
#: apps/remix/app/components/general/direct-template/direct-template-page.tsx
|
||||
msgid "{recipientActionVerb} document"
|
||||
@@ -460,7 +460,7 @@ msgstr "{signerName} a rejeté le document \"{documentName}\"."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}"
|
||||
msgstr ""
|
||||
msgstr "{subscriptionClaimCount, plural, one {# demande de validation d’abonnement} other {# demandes de validation d’abonnement}}"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -1292,7 +1292,7 @@ msgstr "Ajouter un domaine email"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Ajouter un transport d’email"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "Add fields"
|
||||
@@ -1425,7 +1425,7 @@ msgstr "Ajoutez cet URL aux URIs de redirection autorisées de votre fournisseur
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add transport"
|
||||
msgstr ""
|
||||
msgstr "Ajouter un transport"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Additional brand information to display at the bottom of emails"
|
||||
@@ -1744,7 +1744,7 @@ msgstr "Une erreur est survenue lors de la désactivation de l'utilisateur."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "An error occurred while distributing the document."
|
||||
msgstr ""
|
||||
msgstr "Une erreur s'est produite lors de la distribution du document."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "An error occurred while enabling direct link signing."
|
||||
@@ -1959,7 +1959,7 @@ msgstr "API"
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
msgstr "Clé d’API"
|
||||
|
||||
#: apps/remix/app/components/general/claim-limit-fields.tsx
|
||||
msgid "API rate limits"
|
||||
@@ -1971,7 +1971,7 @@ msgstr "Requêtes API"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "API requests have been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Les requêtes API ont été temporairement suspendues."
|
||||
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-mobile.tsx
|
||||
@@ -2044,7 +2044,7 @@ msgstr "Êtes-vous sûr de vouloir supprimer la réclamation suivante?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete the following transport?"
|
||||
msgstr ""
|
||||
msgstr "Êtes-vous sûr de vouloir supprimer le transport suivant ?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete this folder?"
|
||||
@@ -2253,7 +2253,7 @@ msgstr "Tâches en arrière-plan"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Backport email transport"
|
||||
msgstr ""
|
||||
msgstr "Rétroporter le transport d’email"
|
||||
|
||||
#: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
@@ -2615,6 +2615,10 @@ msgstr "CCers"
|
||||
msgid "Center"
|
||||
msgstr "Centre"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Change Field Type"
|
||||
msgstr "Modifier le type de champ"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Change language"
|
||||
msgstr "Changer de langue"
|
||||
@@ -2912,7 +2916,7 @@ msgstr "Configurer les paramètres généraux pour le modèle."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure notification settings for the document."
|
||||
msgstr ""
|
||||
msgstr "Configurer les paramètres de notification pour le document."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure security settings for the document."
|
||||
@@ -3564,7 +3568,7 @@ msgstr "Décliner"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Default (system mailer)"
|
||||
msgstr ""
|
||||
msgstr "Par défaut (service de messagerie du système)"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Default border colour."
|
||||
@@ -3752,7 +3756,7 @@ msgstr "Supprimer le domaine de messagerie"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Delete Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Supprimer le transport d’email"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Delete Envelope"
|
||||
@@ -4174,7 +4178,7 @@ msgstr "Création de document"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Document creation has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "La création de documents a été temporairement suspendue."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -4690,7 +4694,7 @@ msgstr "Par ex. 100"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "e.g. Resend (free plans)"
|
||||
msgstr ""
|
||||
msgstr "p. ex. Resend (offres gratuites)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
@@ -4708,7 +4712,7 @@ msgstr "Modifier"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Edit Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Modifier le transport d’email"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx
|
||||
msgid "Edit Item"
|
||||
@@ -4826,7 +4830,7 @@ msgstr "E-mail créé"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings."
|
||||
msgstr ""
|
||||
msgstr "La distribution par e-mail doit être activée dans l’onglet Paramètres généraux afin de pouvoir configurer les paramètres liés aux e-mails des destinataires."
|
||||
|
||||
#: apps/remix/app/components/general/admin-global-settings-section.tsx
|
||||
msgid "Email document settings"
|
||||
@@ -4915,7 +4919,7 @@ msgstr "Expéditeur de l'e-mail"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Email sending has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "L'envoi d'e-mails a été temporairement suspendu."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgctxt "Audit log format"
|
||||
@@ -4953,12 +4957,12 @@ msgstr "Envoyer un e-mail au signataire si le document est toujours en attente"
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Email transport"
|
||||
msgstr ""
|
||||
msgstr "Transport d’email"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Email Transports"
|
||||
msgstr ""
|
||||
msgstr "Transports d’email"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
|
||||
msgid "Email verification"
|
||||
@@ -5096,7 +5100,7 @@ msgstr "Documents joints"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Endpoint (optional)"
|
||||
msgstr ""
|
||||
msgstr "Endpoint (facultatif)"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "English"
|
||||
@@ -5462,7 +5466,7 @@ msgstr "Échec de la création du ticket de support"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Failed to create transport."
|
||||
msgstr ""
|
||||
msgstr "Échec de la création du transport."
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Failed to delete folder"
|
||||
@@ -5474,7 +5478,7 @@ msgstr "Échec de la suppression de la réclamation d'abonnement."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Failed to delete transport."
|
||||
msgstr ""
|
||||
msgstr "Échec de la suppression du transport."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
|
||||
msgid "Failed to download audit logs. Please try again later."
|
||||
@@ -5518,7 +5522,7 @@ msgstr "Échec de l'enregistrement des paramètres."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Failed to save transport."
|
||||
msgstr ""
|
||||
msgstr "Échec de l’enregistrement du transport."
|
||||
|
||||
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
|
||||
msgid "Failed to sign out all sessions"
|
||||
@@ -5579,7 +5583,7 @@ msgstr "Échoués : {failedCount}"
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Fair use limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "Limite d'utilisation équitable dépassée"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/components/tables/admin-claims-table.tsx
|
||||
@@ -5669,7 +5673,7 @@ msgstr "La taille du fichier dépasse la limite de {APP_DOCUMENT_UPLOAD_SIZE_LIM
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new email transport."
|
||||
msgstr ""
|
||||
msgstr "Renseignez les détails pour créer un nouveau transport d’email."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new subscription claim."
|
||||
@@ -5789,15 +5793,15 @@ msgstr "Français"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "De"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
msgstr "Adresse d’expéditeur"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From name"
|
||||
msgstr ""
|
||||
msgstr "Nom d’expéditeur"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
|
||||
#: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx
|
||||
@@ -6074,7 +6078,7 @@ msgstr "Horizontal"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
msgstr "Hôte"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "How long recipients have to complete this document after it is sent. Uses the team default when set to inherit."
|
||||
@@ -6588,7 +6592,7 @@ msgstr "Laisser vide pour hériter de l'organisation."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Leave blank to keep current"
|
||||
msgstr ""
|
||||
msgstr "Laissez vide pour conserver la valeur actuelle"
|
||||
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
msgid "Leave organisation"
|
||||
@@ -6758,7 +6762,7 @@ msgstr "Gérez un portail de connexion SSO personnalisé pour votre organisation
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Manage all email transports"
|
||||
msgstr ""
|
||||
msgstr "Gérer tous les transports d’email"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx
|
||||
msgid "Manage all organisations you are currently associated with."
|
||||
@@ -7043,7 +7047,7 @@ msgstr "Modifier les destinataires"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Modify the details of the email transport."
|
||||
msgstr ""
|
||||
msgstr "Modifiez les détails du transport d’email."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Modify the details of the subscription claim."
|
||||
@@ -7293,6 +7297,10 @@ msgstr "Aucun e-mail n’est configuré pour ce domaine."
|
||||
msgid "No features enabled"
|
||||
msgstr "Aucune fonctionnalité activée"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "No field type matching this description was found."
|
||||
msgstr "Aucun type de champ correspondant à cette description n'a été trouvé."
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "No fields were detected in your document."
|
||||
msgstr "Aucun champ n'a été détecté dans votre document."
|
||||
@@ -7483,7 +7491,7 @@ msgstr "Rien à faire"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "Notifications"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-number-field.tsx
|
||||
@@ -7788,7 +7796,7 @@ msgstr "Organisations dont l'utilisateur est membre."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Organisations without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Les organisations sans transport utilisent le service de messagerie par défaut du système."
|
||||
|
||||
#: apps/remix/app/components/general/folder/folder-card.tsx
|
||||
msgid "Organise your documents"
|
||||
@@ -8083,7 +8091,7 @@ msgstr "Espace réservé"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
msgid "Plans without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Les offres sans transport utilisent le service de messagerie par défaut du système."
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -8310,7 +8318,7 @@ msgstr "Polonais"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
msgstr "Port"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "Portuguese (Brazil)"
|
||||
@@ -9205,7 +9213,7 @@ msgstr "Enregistrer comme modèle"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
msgstr "Enregistrer les modifications"
|
||||
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
@@ -9261,7 +9269,7 @@ msgstr "Recherche par nom ou e-mail"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Search by name or from address"
|
||||
msgstr ""
|
||||
msgstr "Rechercher par nom ou adresse d’expéditeur"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
@@ -9336,6 +9344,10 @@ msgstr "Sélectionner"
|
||||
msgid "Select a destination for this folder."
|
||||
msgstr "Sélectionnez une destination pour ce dossier."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Select a field type"
|
||||
msgstr "Sélectionnez un type de champ"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
msgid "Select a folder to move this document to."
|
||||
msgstr "Sélectionnez un dossier pour déplacer ce document."
|
||||
@@ -9549,7 +9561,7 @@ msgstr "Envoyer"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send a test email using this transport to verify the configuration."
|
||||
msgstr ""
|
||||
msgstr "Envoyez un email de test avec ce transport pour vérifier la configuration."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Send a test webhook with sample data to verify your integration is working correctly."
|
||||
@@ -9609,11 +9621,11 @@ msgstr "Statut d’envoi"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Send test"
|
||||
msgstr ""
|
||||
msgstr "Envoyer un test"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send Test Email"
|
||||
msgstr ""
|
||||
msgstr "Envoyer un email de test"
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@@ -9731,11 +9743,11 @@ msgstr "Afficher des modèles dans votre profil public pour que votre audience p
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage"
|
||||
msgstr ""
|
||||
msgstr "Afficher l’utilisation"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage with quotas"
|
||||
msgstr ""
|
||||
msgstr "Afficher l’utilisation avec quotas"
|
||||
|
||||
#: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
@@ -10737,11 +10749,11 @@ msgstr "Test"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test email sent."
|
||||
msgstr ""
|
||||
msgstr "Email de test envoyé."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test failed."
|
||||
msgstr ""
|
||||
msgstr "Échec du test."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Test Webhook"
|
||||
@@ -10757,7 +10769,7 @@ msgstr "Webhook de test envoyé"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "test@example.com"
|
||||
msgstr ""
|
||||
msgstr "test@example.com"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
@@ -11345,7 +11357,7 @@ msgstr "Ce document a été signé par tous les destinataires"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "This document has too many recipients. Please remove some recipients or contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Ce document comporte trop de destinataires. Veuillez en supprimer certains ou contacter l’assistance si vous avez besoin d’en ajouter davantage."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
|
||||
msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there."
|
||||
@@ -11406,7 +11418,7 @@ msgstr "Cet e-mail sera envoyé au destinataire qui vient de signer le document,
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: packages/ui/primitives/document-flow/add-signers.tsx
|
||||
msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Cette enveloppe ne peut pas avoir plus de {recipientCountLimit} destinataires. Veuillez contacter l’assistance si vous avez besoin d’en ajouter davantage."
|
||||
|
||||
#: apps/remix/app/components/embed/embed-paywall.tsx
|
||||
msgid "This feature is not available on your current plan"
|
||||
@@ -11780,7 +11792,7 @@ msgstr "Jeton introuvable"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Too many recipients"
|
||||
msgstr ""
|
||||
msgstr "Trop de destinataires"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
@@ -11821,23 +11833,23 @@ msgstr "Transférer les documents vers une autre équipe"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Transport created."
|
||||
msgstr ""
|
||||
msgstr "Canal de courrier créé."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Transport deleted."
|
||||
msgstr ""
|
||||
msgstr "Canal de courrier supprimé."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type"
|
||||
msgstr ""
|
||||
msgstr "Type de canal de courrier"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type cannot be changed after creation."
|
||||
msgstr ""
|
||||
msgstr "Le type de canal de courrier ne peut pas être modifié après sa création."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Transport updated."
|
||||
msgstr ""
|
||||
msgstr "Canal de courrier mis à jour."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
|
||||
@@ -12377,7 +12389,7 @@ msgstr "Utilisez votre clé d'accès pour l'authentification"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Used by claims"
|
||||
msgstr ""
|
||||
msgstr "Utilisé par les réclamations"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
|
||||
#: apps/remix/app/components/tables/document-logs-table.tsx
|
||||
@@ -12429,7 +12441,7 @@ msgstr "Paramètres de l'utilisateur"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "Nom d’utilisateur"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
@@ -12728,7 +12740,7 @@ msgstr "Vous voulez votre propre profil public ?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Warning, this email transport is currently being used by:"
|
||||
msgstr ""
|
||||
msgstr "Attention, ce canal de courrier est actuellement utilisé par :"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
@@ -13713,7 +13725,7 @@ msgstr "Vous avez atteint votre limite de documents pour ce mois. Veuillez passe
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "You have reached your document limit for this plan. Please upgrade your plan."
|
||||
msgstr ""
|
||||
msgstr "Vous avez atteint votre limite de documents pour cet abonnement. Veuillez passer à l’abonnement supérieur."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
@@ -14265,15 +14277,15 @@ msgstr "Votre organisation a été mise à jour avec succès."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit"
|
||||
msgstr ""
|
||||
msgstr "Votre organisation a dépassé une limite d’utilisation équitable."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit. Please contact <0>support</0> to review your plan's limits."
|
||||
msgstr ""
|
||||
msgstr "Votre organisation a dépassé une limite d’utilisation équitable. Veuillez contacter l’<0>assistance</0> pour revoir les limites de votre abonnement."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue."
|
||||
msgstr ""
|
||||
msgstr "Votre organisation a atteint la limite d’utilisation équitable de son abonnement. Veuillez contacter l’administrateur de votre organisation ou l’assistance pour continuer."
|
||||
|
||||
#: packages/email/templates/organisation-limit-exceeded.tsx
|
||||
msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled."
|
||||
@@ -14410,3 +14422,4 @@ msgstr "Votre code de vérification :"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
|
||||
msgid "your-domain.com another-domain.com"
|
||||
msgstr "your-domain.com another-domain.com"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: it\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-06-03 06:16\n"
|
||||
"PO-Revision-Date: 2026-06-09 05:23\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Italian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -405,7 +405,7 @@ msgstr "{maximumEnvelopeItemCount, plural, one {Non puoi caricare più di # elem
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}"
|
||||
msgstr ""
|
||||
msgstr "{organisationClaimCount, plural, one {# richiesta di organizzazione} other {# richieste di organizzazione}}"
|
||||
|
||||
#: apps/remix/app/components/general/direct-template/direct-template-page.tsx
|
||||
msgid "{recipientActionVerb} document"
|
||||
@@ -460,7 +460,7 @@ msgstr "{signerName} ha rifiutato il documento \"{documentName}\"."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}"
|
||||
msgstr ""
|
||||
msgstr "{subscriptionClaimCount, plural, one {# richiesta di abbonamento} other {# richieste di abbonamento}}"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -1292,7 +1292,7 @@ msgstr "Aggiungi Dominio Email"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Aggiungi trasporto email"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "Add fields"
|
||||
@@ -1425,7 +1425,7 @@ msgstr "Aggiungi questo URL agli URI di reindirizzamento consentiti del tuo prov
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add transport"
|
||||
msgstr ""
|
||||
msgstr "Aggiungi trasporto"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Additional brand information to display at the bottom of emails"
|
||||
@@ -1744,7 +1744,7 @@ msgstr "Si è verificato un errore durante la disabilitazione dell'utente."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "An error occurred while distributing the document."
|
||||
msgstr ""
|
||||
msgstr "Si è verificato un errore durante la distribuzione del documento."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "An error occurred while enabling direct link signing."
|
||||
@@ -1959,7 +1959,7 @@ msgstr "API"
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
msgstr "Chiave API"
|
||||
|
||||
#: apps/remix/app/components/general/claim-limit-fields.tsx
|
||||
msgid "API rate limits"
|
||||
@@ -1971,7 +1971,7 @@ msgstr "Richieste API"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "API requests have been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Le richieste API sono state temporaneamente sospese."
|
||||
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-mobile.tsx
|
||||
@@ -2044,7 +2044,7 @@ msgstr "Sei sicuro di voler eliminare la seguente richiesta?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete the following transport?"
|
||||
msgstr ""
|
||||
msgstr "Sei sicuro di voler eliminare il seguente trasporto?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete this folder?"
|
||||
@@ -2253,7 +2253,7 @@ msgstr "Lavori di background"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Backport email transport"
|
||||
msgstr ""
|
||||
msgstr "Backport trasporto email"
|
||||
|
||||
#: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
@@ -2615,6 +2615,10 @@ msgstr "Copiatori"
|
||||
msgid "Center"
|
||||
msgstr "Centro"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Change Field Type"
|
||||
msgstr "Modifica tipo di campo"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Change language"
|
||||
msgstr "Cambia lingua"
|
||||
@@ -2912,7 +2916,7 @@ msgstr "Configura le impostazioni generali per il modello."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure notification settings for the document."
|
||||
msgstr ""
|
||||
msgstr "Configura le impostazioni di notifica per il documento."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure security settings for the document."
|
||||
@@ -3564,7 +3568,7 @@ msgstr "Declina"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Default (system mailer)"
|
||||
msgstr ""
|
||||
msgstr "Predefinito (mailer di sistema)"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Default border colour."
|
||||
@@ -3752,7 +3756,7 @@ msgstr "Elimina Dominio Email"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Delete Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Elimina trasporto email"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Delete Envelope"
|
||||
@@ -4174,7 +4178,7 @@ msgstr "Creazione del documento"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Document creation has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "La creazione di documenti è stata temporaneamente sospesa."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -4690,7 +4694,7 @@ msgstr "Es. 100"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "e.g. Resend (free plans)"
|
||||
msgstr ""
|
||||
msgstr "es. Resend (piani gratuiti)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
@@ -4708,7 +4712,7 @@ msgstr "Modifica"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Edit Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Modifica trasporto email"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx
|
||||
msgid "Edit Item"
|
||||
@@ -4826,7 +4830,7 @@ msgstr "Email Creata"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings."
|
||||
msgstr ""
|
||||
msgstr "Per configurare le impostazioni relative alle email dei destinatari, è necessario abilitare la distribuzione email nella scheda delle impostazioni generali."
|
||||
|
||||
#: apps/remix/app/components/general/admin-global-settings-section.tsx
|
||||
msgid "Email document settings"
|
||||
@@ -4915,7 +4919,7 @@ msgstr "Mittente Email"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Email sending has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "L'invio di email è stato temporaneamente sospeso."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgctxt "Audit log format"
|
||||
@@ -4953,12 +4957,12 @@ msgstr "Invia un'email al firmatario se il documento è ancora in sospeso"
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Email transport"
|
||||
msgstr ""
|
||||
msgstr "Trasporto email"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Email Transports"
|
||||
msgstr ""
|
||||
msgstr "Trasporti email"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
|
||||
msgid "Email verification"
|
||||
@@ -5096,7 +5100,7 @@ msgstr "Documenti allegati"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Endpoint (optional)"
|
||||
msgstr ""
|
||||
msgstr "Endpoint (facoltativo)"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "English"
|
||||
@@ -5462,7 +5466,7 @@ msgstr "Impossibile creare un ticket di supporto"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Failed to create transport."
|
||||
msgstr ""
|
||||
msgstr "Impossibile creare il trasporto."
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Failed to delete folder"
|
||||
@@ -5474,7 +5478,7 @@ msgstr "Eliminazione di rivendicazione di abbonamento fallita."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Failed to delete transport."
|
||||
msgstr ""
|
||||
msgstr "Impossibile eliminare il trasporto."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
|
||||
msgid "Failed to download audit logs. Please try again later."
|
||||
@@ -5518,7 +5522,7 @@ msgstr "Impossibile salvare le impostazioni."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Failed to save transport."
|
||||
msgstr ""
|
||||
msgstr "Impossibile salvare il trasporto."
|
||||
|
||||
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
|
||||
msgid "Failed to sign out all sessions"
|
||||
@@ -5579,7 +5583,7 @@ msgstr "Falliti: {failedCount}"
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Fair use limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "Limite di utilizzo corretto superato."
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/components/tables/admin-claims-table.tsx
|
||||
@@ -5669,7 +5673,7 @@ msgstr "La dimensione del file supera il limite di {APP_DOCUMENT_UPLOAD_SIZE_LIM
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new email transport."
|
||||
msgstr ""
|
||||
msgstr "Compila i dettagli per creare un nuovo trasporto email."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new subscription claim."
|
||||
@@ -5789,15 +5793,15 @@ msgstr "Francese"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "Da"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
msgstr "Indirizzo mittente"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From name"
|
||||
msgstr ""
|
||||
msgstr "Nome mittente"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
|
||||
#: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx
|
||||
@@ -6074,7 +6078,7 @@ msgstr "Orizzontale"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
msgstr "Host"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "How long recipients have to complete this document after it is sent. Uses the team default when set to inherit."
|
||||
@@ -6588,7 +6592,7 @@ msgstr "Lascia vuoto per ereditare dall'organizzazione."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Leave blank to keep current"
|
||||
msgstr ""
|
||||
msgstr "Lascia vuoto per mantenere quello attuale"
|
||||
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
msgid "Leave organisation"
|
||||
@@ -6758,7 +6762,7 @@ msgstr "Gestisci un portale di accesso SSO personalizzato per la tua organizzazi
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Manage all email transports"
|
||||
msgstr ""
|
||||
msgstr "Gestisci tutti i trasporti email"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx
|
||||
msgid "Manage all organisations you are currently associated with."
|
||||
@@ -7043,7 +7047,7 @@ msgstr "Modifica destinatari"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Modify the details of the email transport."
|
||||
msgstr ""
|
||||
msgstr "Modifica i dettagli del trasporto email."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Modify the details of the subscription claim."
|
||||
@@ -7293,6 +7297,10 @@ msgstr "Nessuna email configurata per questo dominio."
|
||||
msgid "No features enabled"
|
||||
msgstr "Nessuna funzionalità abilitata"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "No field type matching this description was found."
|
||||
msgstr "Nessun tipo di campo corrispondente a questa descrizione è stato trovato."
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "No fields were detected in your document."
|
||||
msgstr "Nel tuo documento non è stato rilevato alcun campo."
|
||||
@@ -7483,7 +7491,7 @@ msgstr "Niente da fare"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "Notifiche"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-number-field.tsx
|
||||
@@ -7788,7 +7796,7 @@ msgstr "Organizzazioni di cui l'utente è membro."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Organisations without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Le organizzazioni senza un trasporto utilizzano il mailer di sistema predefinito."
|
||||
|
||||
#: apps/remix/app/components/general/folder/folder-card.tsx
|
||||
msgid "Organise your documents"
|
||||
@@ -8083,7 +8091,7 @@ msgstr "Segnaposto"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
msgid "Plans without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "I piani senza un trasporto utilizzano il mailer di sistema predefinito."
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -8310,7 +8318,7 @@ msgstr "Polacco"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
msgstr "Porta"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "Portuguese (Brazil)"
|
||||
@@ -9205,7 +9213,7 @@ msgstr "Salva come modello"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
msgstr "Salva le modifiche"
|
||||
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
@@ -9261,7 +9269,7 @@ msgstr "Cerca per nome o email"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Search by name or from address"
|
||||
msgstr ""
|
||||
msgstr "Cerca per nome o indirizzo mittente"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
@@ -9336,6 +9344,10 @@ msgstr "Seleziona"
|
||||
msgid "Select a destination for this folder."
|
||||
msgstr "Seleziona una destinazione per questa cartella."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Select a field type"
|
||||
msgstr "Seleziona un tipo di campo"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
msgid "Select a folder to move this document to."
|
||||
msgstr "Seleziona una cartella in cui spostare questo documento."
|
||||
@@ -9549,7 +9561,7 @@ msgstr "Invia"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send a test email using this transport to verify the configuration."
|
||||
msgstr ""
|
||||
msgstr "Invia un'email di prova utilizzando questo trasporto per verificare la configurazione."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Send a test webhook with sample data to verify your integration is working correctly."
|
||||
@@ -9609,11 +9621,11 @@ msgstr "Stato di invio"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Send test"
|
||||
msgstr ""
|
||||
msgstr "Invia test"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send Test Email"
|
||||
msgstr ""
|
||||
msgstr "Invia email di prova"
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@@ -9731,11 +9743,11 @@ msgstr "Mostra modelli nel tuo profilo pubblico per il tuo pubblico da firmare e
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage"
|
||||
msgstr ""
|
||||
msgstr "Mostra utilizzo"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage with quotas"
|
||||
msgstr ""
|
||||
msgstr "Mostra utilizzo con quote"
|
||||
|
||||
#: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
@@ -10737,11 +10749,11 @@ msgstr "Test"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test email sent."
|
||||
msgstr ""
|
||||
msgstr "Email di prova inviata."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test failed."
|
||||
msgstr ""
|
||||
msgstr "Test non riuscito."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Test Webhook"
|
||||
@@ -10757,7 +10769,7 @@ msgstr "Webhook di prova inviato"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "test@example.com"
|
||||
msgstr ""
|
||||
msgstr "test@example.com"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
@@ -11345,7 +11357,7 @@ msgstr "Questo documento è stato firmato da tutti i destinatari"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "This document has too many recipients. Please remove some recipients or contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Questo documento ha troppi destinatari. Rimuovi alcuni destinatari oppure contatta l'assistenza se hai bisogno di aggiungerne altri."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
|
||||
msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there."
|
||||
@@ -11406,7 +11418,7 @@ msgstr "Questa email sarà inviata al destinatario che ha appena firmato il docu
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: packages/ui/primitives/document-flow/add-signers.tsx
|
||||
msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Questo envelope non può avere più di {recipientCountLimit} destinatari. Contatta l'assistenza se hai bisogno di aggiungerne altri."
|
||||
|
||||
#: apps/remix/app/components/embed/embed-paywall.tsx
|
||||
msgid "This feature is not available on your current plan"
|
||||
@@ -11780,7 +11792,7 @@ msgstr "Token non trovato"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Too many recipients"
|
||||
msgstr ""
|
||||
msgstr "Troppi destinatari"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
@@ -11821,23 +11833,23 @@ msgstr "Trasferisci i documenti a un altro team"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Transport created."
|
||||
msgstr ""
|
||||
msgstr "Trasporto creato."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Transport deleted."
|
||||
msgstr ""
|
||||
msgstr "Trasporto eliminato."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type"
|
||||
msgstr ""
|
||||
msgstr "Tipo di trasporto"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type cannot be changed after creation."
|
||||
msgstr ""
|
||||
msgstr "Il tipo di trasporto non può essere modificato dopo la creazione."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Transport updated."
|
||||
msgstr ""
|
||||
msgstr "Trasporto aggiornato."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
|
||||
@@ -12377,7 +12389,7 @@ msgstr "Usa la tua chiave di accesso per l'autenticazione"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Used by claims"
|
||||
msgstr ""
|
||||
msgstr "Utilizzato dai claim"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
|
||||
#: apps/remix/app/components/tables/document-logs-table.tsx
|
||||
@@ -12429,7 +12441,7 @@ msgstr "Impostazioni utente"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "Nome utente"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
@@ -12728,7 +12740,7 @@ msgstr "Vuoi il tuo profilo pubblico?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Warning, this email transport is currently being used by:"
|
||||
msgstr ""
|
||||
msgstr "Attenzione, questo trasporto email è attualmente utilizzato da:"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
@@ -13713,7 +13725,7 @@ msgstr "Hai raggiunto il limite dei documenti per questo mese. Si prega di aggio
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "You have reached your document limit for this plan. Please upgrade your plan."
|
||||
msgstr ""
|
||||
msgstr "Hai raggiunto il limite di documenti previsto per questo piano. Effettua l'upgrade del piano."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
@@ -14265,15 +14277,15 @@ msgstr "La tua organizzazione è stata aggiornata con successo."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit"
|
||||
msgstr ""
|
||||
msgstr "La tua organizzazione ha superato un limite di utilizzo corretto (fair use)."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit. Please contact <0>support</0> to review your plan's limits."
|
||||
msgstr ""
|
||||
msgstr "La tua organizzazione ha superato un limite di utilizzo corretto (fair use). Contatta <0>l'assistenza</0> per rivedere i limiti del piano."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue."
|
||||
msgstr ""
|
||||
msgstr "La tua organizzazione ha raggiunto il limite di utilizzo corretto (fair use) previsto dal piano. Contatta l'amministratore della tua organizzazione o l'assistenza per continuare."
|
||||
|
||||
#: packages/email/templates/organisation-limit-exceeded.tsx
|
||||
msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled."
|
||||
@@ -14410,3 +14422,4 @@ msgstr "Il tuo codice di verifica:"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
|
||||
msgid "your-domain.com another-domain.com"
|
||||
msgstr "tuo-dominio.com altro-dominio.com"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ja\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-06-03 06:16\n"
|
||||
"PO-Revision-Date: 2026-06-09 05:23\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Japanese\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -405,7 +405,7 @@ msgstr "{maximumEnvelopeItemCount, plural, other {1 つの封筒にアップロ
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}"
|
||||
msgstr ""
|
||||
msgstr "{organisationClaimCount, plural, other {# 件の組織クレーム}}"
|
||||
|
||||
#: apps/remix/app/components/general/direct-template/direct-template-page.tsx
|
||||
msgid "{recipientActionVerb} document"
|
||||
@@ -460,7 +460,7 @@ msgstr "{signerName} がドキュメント「{documentName}」を却下しまし
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}"
|
||||
msgstr ""
|
||||
msgstr "{subscriptionClaimCount, plural, other {# 件のサブスクリプションクレーム}}"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -1292,7 +1292,7 @@ msgstr "メールドメインを追加"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add Email Transport"
|
||||
msgstr ""
|
||||
msgstr "メールトランスポートを追加"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "Add fields"
|
||||
@@ -1425,7 +1425,7 @@ msgstr "この URL をプロバイダーの許可されたリダイレクト URI
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add transport"
|
||||
msgstr ""
|
||||
msgstr "トランスポートを追加"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Additional brand information to display at the bottom of emails"
|
||||
@@ -1744,7 +1744,7 @@ msgstr "ユーザーの無効化中にエラーが発生しました。"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "An error occurred while distributing the document."
|
||||
msgstr ""
|
||||
msgstr "ドキュメントの配布中にエラーが発生しました。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "An error occurred while enabling direct link signing."
|
||||
@@ -1959,7 +1959,7 @@ msgstr "API"
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
msgstr "API キー"
|
||||
|
||||
#: apps/remix/app/components/general/claim-limit-fields.tsx
|
||||
msgid "API rate limits"
|
||||
@@ -1971,7 +1971,7 @@ msgstr "API リクエスト"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "API requests have been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "API リクエストは一時的に一時停止されています"
|
||||
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-mobile.tsx
|
||||
@@ -2044,7 +2044,7 @@ msgstr "次のクレームを削除してもよろしいですか?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete the following transport?"
|
||||
msgstr ""
|
||||
msgstr "次のトランスポートを削除してもよろしいですか?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete this folder?"
|
||||
@@ -2253,7 +2253,7 @@ msgstr "バックグラウンドジョブ"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Backport email transport"
|
||||
msgstr ""
|
||||
msgstr "メールトランスポートをバックポート"
|
||||
|
||||
#: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
@@ -2615,6 +2615,10 @@ msgstr "Cc 受信者"
|
||||
msgid "Center"
|
||||
msgstr "中央"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Change Field Type"
|
||||
msgstr "フィールドタイプを変更"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Change language"
|
||||
msgstr "言語を変更する"
|
||||
@@ -2912,7 +2916,7 @@ msgstr "このテンプレートの一般設定を構成します。"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure notification settings for the document."
|
||||
msgstr ""
|
||||
msgstr "文書の通知設定を構成します。"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure security settings for the document."
|
||||
@@ -3564,7 +3568,7 @@ msgstr "辞退"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Default (system mailer)"
|
||||
msgstr ""
|
||||
msgstr "デフォルト(システムメーラー)"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Default border colour."
|
||||
@@ -3752,7 +3756,7 @@ msgstr "メールドメインを削除"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Delete Email Transport"
|
||||
msgstr ""
|
||||
msgstr "メールトランスポートを削除"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Delete Envelope"
|
||||
@@ -4174,7 +4178,7 @@ msgstr "ドキュメント作成"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Document creation has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "ドキュメントの作成は一時的に一時停止されています"
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -4690,7 +4694,7 @@ msgstr "例: 100"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "e.g. Resend (free plans)"
|
||||
msgstr ""
|
||||
msgstr "例:Resend(無料プラン)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
@@ -4708,7 +4712,7 @@ msgstr "編集"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Edit Email Transport"
|
||||
msgstr ""
|
||||
msgstr "メールトランスポートを編集"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx
|
||||
msgid "Edit Item"
|
||||
@@ -4826,7 +4830,7 @@ msgstr "メールが作成されました"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings."
|
||||
msgstr ""
|
||||
msgstr "受信者のメールに関する設定を行うには、一般設定タブでメール配信を有効にする必要があります。"
|
||||
|
||||
#: apps/remix/app/components/general/admin-global-settings-section.tsx
|
||||
msgid "Email document settings"
|
||||
@@ -4915,7 +4919,7 @@ msgstr "メール送信者"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Email sending has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "メール送信は一時的に一時停止されています"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgctxt "Audit log format"
|
||||
@@ -4953,12 +4957,12 @@ msgstr "ドキュメントがまだ保留中の場合に署名者へメール通
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Email transport"
|
||||
msgstr ""
|
||||
msgstr "メールトランスポート"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Email Transports"
|
||||
msgstr ""
|
||||
msgstr "メールトランスポート一覧"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
|
||||
msgid "Email verification"
|
||||
@@ -5096,7 +5100,7 @@ msgstr "同封された文書"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Endpoint (optional)"
|
||||
msgstr ""
|
||||
msgstr "エンドポイント(任意)"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "English"
|
||||
@@ -5462,7 +5466,7 @@ msgstr "サポートチケットの作成に失敗しました"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Failed to create transport."
|
||||
msgstr ""
|
||||
msgstr "トランスポートの作成に失敗しました。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Failed to delete folder"
|
||||
@@ -5474,7 +5478,7 @@ msgstr "サブスクリプションクレームの削除に失敗しました。
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Failed to delete transport."
|
||||
msgstr ""
|
||||
msgstr "トランスポートの削除に失敗しました。"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
|
||||
msgid "Failed to download audit logs. Please try again later."
|
||||
@@ -5518,7 +5522,7 @@ msgstr "設定の保存に失敗しました。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Failed to save transport."
|
||||
msgstr ""
|
||||
msgstr "トランスポートの保存に失敗しました。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
|
||||
msgid "Failed to sign out all sessions"
|
||||
@@ -5579,7 +5583,7 @@ msgstr "失敗: {failedCount}"
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Fair use limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "フェアユースの上限を超えました"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/components/tables/admin-claims-table.tsx
|
||||
@@ -5669,7 +5673,7 @@ msgstr "ファイルサイズが {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB の上限
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new email transport."
|
||||
msgstr ""
|
||||
msgstr "新しいメールトランスポートを作成するために詳細を入力してください。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new subscription claim."
|
||||
@@ -5789,15 +5793,15 @@ msgstr "フランス語"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "送信元"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
msgstr "送信元アドレス"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From name"
|
||||
msgstr ""
|
||||
msgstr "送信元名"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
|
||||
#: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx
|
||||
@@ -6074,7 +6078,7 @@ msgstr "横"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
msgstr "ホスト"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "How long recipients have to complete this document after it is sent. Uses the team default when set to inherit."
|
||||
@@ -6588,7 +6592,7 @@ msgstr "空欄のままにすると、組織から継承されます。"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Leave blank to keep current"
|
||||
msgstr ""
|
||||
msgstr "現在の設定を維持する場合は空白のままにしてください"
|
||||
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
msgid "Leave organisation"
|
||||
@@ -6758,7 +6762,7 @@ msgstr "組織向けのカスタムSSOログインポータルを管理します
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Manage all email transports"
|
||||
msgstr ""
|
||||
msgstr "すべてのメールトランスポートを管理"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx
|
||||
msgid "Manage all organisations you are currently associated with."
|
||||
@@ -7043,7 +7047,7 @@ msgstr "受信者を変更"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Modify the details of the email transport."
|
||||
msgstr ""
|
||||
msgstr "このメールトランスポートの詳細を変更します。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Modify the details of the subscription claim."
|
||||
@@ -7293,6 +7297,10 @@ msgstr "このドメインにはメールが設定されていません。"
|
||||
msgid "No features enabled"
|
||||
msgstr "有効な機能はありません"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "No field type matching this description was found."
|
||||
msgstr "この説明に一致するフィールドタイプが見つかりませんでした。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "No fields were detected in your document."
|
||||
msgstr "ドキュメント内でフィールドが検出されませんでした。"
|
||||
@@ -7483,7 +7491,7 @@ msgstr "今は行うことがありません"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "通知"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-number-field.tsx
|
||||
@@ -7788,7 +7796,7 @@ msgstr "ユーザーが所属している組織。"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Organisations without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "トランスポートが設定されていない組織は、システムのデフォルトメーラーを使用します。"
|
||||
|
||||
#: apps/remix/app/components/general/folder/folder-card.tsx
|
||||
msgid "Organise your documents"
|
||||
@@ -8083,7 +8091,7 @@ msgstr "プレースホルダー"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
msgid "Plans without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "トランスポートが設定されていないプランは、システムのデフォルトメーラーを使用します。"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -8310,7 +8318,7 @@ msgstr "ポーランド語"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
msgstr "ポート"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "Portuguese (Brazil)"
|
||||
@@ -9205,7 +9213,7 @@ msgstr "テンプレートとして保存"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
msgstr "変更を保存"
|
||||
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
@@ -9261,7 +9269,7 @@ msgstr "名前またはメールアドレスで検索"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Search by name or from address"
|
||||
msgstr ""
|
||||
msgstr "名前または送信元アドレスで検索"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
@@ -9336,6 +9344,10 @@ msgstr "選択"
|
||||
msgid "Select a destination for this folder."
|
||||
msgstr "このフォルダの移動先を選択してください。"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Select a field type"
|
||||
msgstr "フィールドの種類を選択してください"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
msgid "Select a folder to move this document to."
|
||||
msgstr "このドキュメントを移動するフォルダを選択してください。"
|
||||
@@ -9549,7 +9561,7 @@ msgstr "送信"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send a test email using this transport to verify the configuration."
|
||||
msgstr ""
|
||||
msgstr "このトランスポートを使用してテストメールを送信し、設定を確認します。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Send a test webhook with sample data to verify your integration is working correctly."
|
||||
@@ -9609,11 +9621,11 @@ msgstr "送信状況"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Send test"
|
||||
msgstr ""
|
||||
msgstr "テスト送信"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send Test Email"
|
||||
msgstr ""
|
||||
msgstr "テストメールを送信"
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@@ -9731,11 +9743,11 @@ msgstr "オーディエンスがすぐに署名を開始できるよう、公開
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage"
|
||||
msgstr ""
|
||||
msgstr "利用状況を表示する"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage with quotas"
|
||||
msgstr ""
|
||||
msgstr "割り当てを含む利用状況を表示する"
|
||||
|
||||
#: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
@@ -10737,11 +10749,11 @@ msgstr "テスト"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test email sent."
|
||||
msgstr ""
|
||||
msgstr "テストメールを送信しました。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test failed."
|
||||
msgstr ""
|
||||
msgstr "テストに失敗しました。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Test Webhook"
|
||||
@@ -10757,7 +10769,7 @@ msgstr "テスト Webhook を送信しました"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "test@example.com"
|
||||
msgstr ""
|
||||
msgstr "test@example.com"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
@@ -11345,7 +11357,7 @@ msgstr "この文書はすべての受信者によって署名されています
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "This document has too many recipients. Please remove some recipients or contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "このドキュメントの受信者が多すぎます。受信者を減らすか、さらに必要な場合はサポートまでお問い合わせください。"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
|
||||
msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there."
|
||||
@@ -11406,7 +11418,7 @@ msgstr "このメールは、他に未署名の受信者がいる場合、ドキ
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: packages/ui/primitives/document-flow/add-signers.tsx
|
||||
msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "この封筒に追加できる受信者は {recipientCountLimit} 人までです。さらに必要な場合はサポートまでお問い合わせください。"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-paywall.tsx
|
||||
msgid "This feature is not available on your current plan"
|
||||
@@ -11780,7 +11792,7 @@ msgstr "トークンが見つかりません"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Too many recipients"
|
||||
msgstr ""
|
||||
msgstr "受信者が多すぎます"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
@@ -11821,23 +11833,23 @@ msgstr "ドキュメントを別のチームに転送する"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Transport created."
|
||||
msgstr ""
|
||||
msgstr "トランスポートを作成しました。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Transport deleted."
|
||||
msgstr ""
|
||||
msgstr "トランスポートを削除しました。"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type"
|
||||
msgstr ""
|
||||
msgstr "トランスポート種別"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type cannot be changed after creation."
|
||||
msgstr ""
|
||||
msgstr "トランスポート種別は作成後に変更できません。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Transport updated."
|
||||
msgstr ""
|
||||
msgstr "トランスポートを更新しました。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
|
||||
@@ -12377,7 +12389,7 @@ msgstr "パスキーで認証する"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Used by claims"
|
||||
msgstr ""
|
||||
msgstr "クレームで使用中"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
|
||||
#: apps/remix/app/components/tables/document-logs-table.tsx
|
||||
@@ -12429,7 +12441,7 @@ msgstr "ユーザー設定"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "ユーザー名"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
@@ -12728,7 +12740,7 @@ msgstr "自分専用の公開プロフィールが欲しいですか?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Warning, this email transport is currently being used by:"
|
||||
msgstr ""
|
||||
msgstr "警告: このメールトランスポートは現在次の項目で使用されています:"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
@@ -13713,7 +13725,7 @@ msgstr "今月のドキュメント作成数の上限に達しました。プラ
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "You have reached your document limit for this plan. Please upgrade your plan."
|
||||
msgstr ""
|
||||
msgstr "このプランで作成できるドキュメント数の上限に達しました。プランをアップグレードしてください。"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
@@ -14265,15 +14277,15 @@ msgstr "組織は正常に更新されました。"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit"
|
||||
msgstr ""
|
||||
msgstr "ご利用の組織はフェアユースの上限を超えています"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit. Please contact <0>support</0> to review your plan's limits."
|
||||
msgstr ""
|
||||
msgstr "ご利用の組織はフェアユースの上限を超えています。プランの上限について確認するには、<0>サポート</0>までお問い合わせください。"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue."
|
||||
msgstr ""
|
||||
msgstr "ご利用の組織はプランのフェアユース上限に達しました。続行するには、組織管理者またはサポートまでお問い合わせください。"
|
||||
|
||||
#: packages/email/templates/organisation-limit-exceeded.tsx
|
||||
msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled."
|
||||
@@ -14410,3 +14422,4 @@ msgstr "認証コード:"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
|
||||
msgid "your-domain.com another-domain.com"
|
||||
msgstr "your-domain.com another-domain.com"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ko\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-06-03 06:16\n"
|
||||
"PO-Revision-Date: 2026-06-09 05:23\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Korean\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -405,7 +405,7 @@ msgstr "{maximumEnvelopeItemCount, plural, other {하나의 봉투에는 최대
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}"
|
||||
msgstr ""
|
||||
msgstr "{organisationClaimCount, plural, other {#개 조직 클레임}}"
|
||||
|
||||
#: apps/remix/app/components/general/direct-template/direct-template-page.tsx
|
||||
msgid "{recipientActionVerb} document"
|
||||
@@ -460,7 +460,7 @@ msgstr "{signerName}님이 \"{documentName}\" 문서를 거부했습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}"
|
||||
msgstr ""
|
||||
msgstr "{subscriptionClaimCount, plural, other {#개 구독 클레임}}"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -1292,7 +1292,7 @@ msgstr "이메일 도메인 추가"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add Email Transport"
|
||||
msgstr ""
|
||||
msgstr "이메일 전송 방식 추가하기"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "Add fields"
|
||||
@@ -1425,7 +1425,7 @@ msgstr "이 URL을 공급자의 허용된 리디렉션 URI에 추가하세요."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add transport"
|
||||
msgstr ""
|
||||
msgstr "전송 방식 추가"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Additional brand information to display at the bottom of emails"
|
||||
@@ -1744,7 +1744,7 @@ msgstr "사용자를 비활성화하는 동안 오류가 발생했습니다."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "An error occurred while distributing the document."
|
||||
msgstr ""
|
||||
msgstr "문서를 배포하는 동안 오류가 발생했습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "An error occurred while enabling direct link signing."
|
||||
@@ -1959,7 +1959,7 @@ msgstr "API"
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
msgstr "API 키"
|
||||
|
||||
#: apps/remix/app/components/general/claim-limit-fields.tsx
|
||||
msgid "API rate limits"
|
||||
@@ -1971,7 +1971,7 @@ msgstr "API 요청"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "API requests have been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "API 요청이 일시적으로 중지되었습니다."
|
||||
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-mobile.tsx
|
||||
@@ -2044,7 +2044,7 @@ msgstr "다음 클레임을 삭제하시겠습니까?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete the following transport?"
|
||||
msgstr ""
|
||||
msgstr "다음 전송 방식을 삭제하시겠습니까?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete this folder?"
|
||||
@@ -2253,7 +2253,7 @@ msgstr "백그라운드 작업"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Backport email transport"
|
||||
msgstr ""
|
||||
msgstr "이메일 전송 방식 백포트"
|
||||
|
||||
#: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
@@ -2615,6 +2615,10 @@ msgstr "Cc 수신자"
|
||||
msgid "Center"
|
||||
msgstr "가운데"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Change Field Type"
|
||||
msgstr "필드 유형 변경"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Change language"
|
||||
msgstr "언어 변경하기"
|
||||
@@ -2912,7 +2916,7 @@ msgstr "템플릿의 일반 설정을 구성합니다."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure notification settings for the document."
|
||||
msgstr ""
|
||||
msgstr "문서에 대한 알림 설정을 구성합니다."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure security settings for the document."
|
||||
@@ -3564,7 +3568,7 @@ msgstr "거부"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Default (system mailer)"
|
||||
msgstr ""
|
||||
msgstr "기본값(시스템 메일러)"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Default border colour."
|
||||
@@ -3752,7 +3756,7 @@ msgstr "이메일 도메인 삭제"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Delete Email Transport"
|
||||
msgstr ""
|
||||
msgstr "이메일 전송 방식 삭제하기"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Delete Envelope"
|
||||
@@ -4174,7 +4178,7 @@ msgstr "문서 생성"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Document creation has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "문서 생성이 일시적으로 중지되었습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -4690,7 +4694,7 @@ msgstr "예: 100"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "e.g. Resend (free plans)"
|
||||
msgstr ""
|
||||
msgstr "예: Resend(무료 플랜)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
@@ -4708,7 +4712,7 @@ msgstr "편집"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Edit Email Transport"
|
||||
msgstr ""
|
||||
msgstr "이메일 전송 방식 편집하기"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx
|
||||
msgid "Edit Item"
|
||||
@@ -4826,7 +4830,7 @@ msgstr "이메일이 생성되었습니다"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings."
|
||||
msgstr ""
|
||||
msgstr "수신자 이메일 관련 설정을 구성하려면 일반 설정 탭에서 이메일 발송 기능을 활성화해야 합니다."
|
||||
|
||||
#: apps/remix/app/components/general/admin-global-settings-section.tsx
|
||||
msgid "Email document settings"
|
||||
@@ -4915,7 +4919,7 @@ msgstr "이메일 발신자"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Email sending has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "이메일 발송이 일시적으로 중지되었습니다."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgctxt "Audit log format"
|
||||
@@ -4953,12 +4957,12 @@ msgstr "문서가 아직 보류 중이면 서명자에게 이메일 보내기"
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Email transport"
|
||||
msgstr ""
|
||||
msgstr "이메일 전송 방식"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Email Transports"
|
||||
msgstr ""
|
||||
msgstr "이메일 전송 방식들"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
|
||||
msgid "Email verification"
|
||||
@@ -5096,7 +5100,7 @@ msgstr "동봉된 문서들"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Endpoint (optional)"
|
||||
msgstr ""
|
||||
msgstr "엔드포인트(선택 사항)"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "English"
|
||||
@@ -5462,7 +5466,7 @@ msgstr "지원 티켓을 생성하지 못했습니다"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Failed to create transport."
|
||||
msgstr ""
|
||||
msgstr "전송 방식을 생성하지 못했습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Failed to delete folder"
|
||||
@@ -5474,7 +5478,7 @@ msgstr "구독 클레임을 삭제하지 못했습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Failed to delete transport."
|
||||
msgstr ""
|
||||
msgstr "전송 방식을 삭제하지 못했습니다."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
|
||||
msgid "Failed to download audit logs. Please try again later."
|
||||
@@ -5518,7 +5522,7 @@ msgstr "설정을 저장하지 못했습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Failed to save transport."
|
||||
msgstr ""
|
||||
msgstr "전송 방식을 저장하지 못했습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
|
||||
msgid "Failed to sign out all sessions"
|
||||
@@ -5579,7 +5583,7 @@ msgstr "실패: {failedCount}"
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Fair use limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "공정 사용 한도를 초과했습니다."
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/components/tables/admin-claims-table.tsx
|
||||
@@ -5669,7 +5673,7 @@ msgstr "파일 크기가 {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB 제한을 초과했
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new email transport."
|
||||
msgstr ""
|
||||
msgstr "새 이메일 전송 방식을 만들기 위해 세부 정보를 입력하세요."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new subscription claim."
|
||||
@@ -5789,15 +5793,15 @@ msgstr "프랑스어"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "보낸 사람"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
msgstr "보낸 사람 주소"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From name"
|
||||
msgstr ""
|
||||
msgstr "보낸 사람 이름"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
|
||||
#: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx
|
||||
@@ -6074,7 +6078,7 @@ msgstr "가로"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
msgstr "호스트"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "How long recipients have to complete this document after it is sent. Uses the team default when set to inherit."
|
||||
@@ -6588,7 +6592,7 @@ msgstr "비워 두면 조직 설정을 상속합니다."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Leave blank to keep current"
|
||||
msgstr ""
|
||||
msgstr "현재 값을 유지하려면 비워 두세요"
|
||||
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
msgid "Leave organisation"
|
||||
@@ -6758,7 +6762,7 @@ msgstr "조직을 위한 사용자 정의 SSO 로그인 포털을 관리하세
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Manage all email transports"
|
||||
msgstr ""
|
||||
msgstr "모든 이메일 전송 방식을 관리합니다"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx
|
||||
msgid "Manage all organisations you are currently associated with."
|
||||
@@ -7043,7 +7047,7 @@ msgstr "수신자 수정"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Modify the details of the email transport."
|
||||
msgstr ""
|
||||
msgstr "이메일 전송 방식의 세부 정보를 수정합니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Modify the details of the subscription claim."
|
||||
@@ -7293,6 +7297,10 @@ msgstr "이 도메인에 설정된 이메일이 없습니다."
|
||||
msgid "No features enabled"
|
||||
msgstr "활성화된 기능이 없습니다"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "No field type matching this description was found."
|
||||
msgstr "이 설명과 일치하는 필드 유형을 찾을 수 없습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "No fields were detected in your document."
|
||||
msgstr "문서에서 감지된 필드가 없습니다."
|
||||
@@ -7483,7 +7491,7 @@ msgstr "할 일이 없습니다"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "알림"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-number-field.tsx
|
||||
@@ -7788,7 +7796,7 @@ msgstr "사용자가 속한 조직입니다."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Organisations without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "전송 방식이 없는 조직은 시스템 기본 메일러를 사용합니다."
|
||||
|
||||
#: apps/remix/app/components/general/folder/folder-card.tsx
|
||||
msgid "Organise your documents"
|
||||
@@ -8083,7 +8091,7 @@ msgstr "플레이스홀더"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
msgid "Plans without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "전송 방식이 없는 플랜은 시스템 기본 메일러를 사용합니다."
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -8310,7 +8318,7 @@ msgstr "폴란드어"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
msgstr "포트"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "Portuguese (Brazil)"
|
||||
@@ -9205,7 +9213,7 @@ msgstr "템플릿으로 저장"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
msgstr "변경 사항 저장"
|
||||
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
@@ -9261,7 +9269,7 @@ msgstr "이름 또는 이메일로 검색"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Search by name or from address"
|
||||
msgstr ""
|
||||
msgstr "이름 또는 보낸 사람 주소로 검색"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
@@ -9336,6 +9344,10 @@ msgstr "선택"
|
||||
msgid "Select a destination for this folder."
|
||||
msgstr "이 폴더의 대상 위치를 선택하세요."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Select a field type"
|
||||
msgstr "필드 유형을 선택하세요."
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
msgid "Select a folder to move this document to."
|
||||
msgstr "이 문서를 이동할 폴더를 선택하세요."
|
||||
@@ -9549,7 +9561,7 @@ msgstr "보내기"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send a test email using this transport to verify the configuration."
|
||||
msgstr ""
|
||||
msgstr "구성을 확인하기 위해 이 전송 방식을 사용해 테스트 이메일을 보내세요."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Send a test webhook with sample data to verify your integration is working correctly."
|
||||
@@ -9609,11 +9621,11 @@ msgstr "발송 상태"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Send test"
|
||||
msgstr ""
|
||||
msgstr "테스트 보내기"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send Test Email"
|
||||
msgstr ""
|
||||
msgstr "테스트 이메일 보내기"
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@@ -9731,11 +9743,11 @@ msgstr "공개 프로필에 템플릿을 표시해, 사용자가 빠르게 서
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage"
|
||||
msgstr ""
|
||||
msgstr "사용량 표시하기"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage with quotas"
|
||||
msgstr ""
|
||||
msgstr "할당량과 함께 사용량 표시하기"
|
||||
|
||||
#: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
@@ -10737,11 +10749,11 @@ msgstr "테스트"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test email sent."
|
||||
msgstr ""
|
||||
msgstr "테스트 이메일을 보냈습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test failed."
|
||||
msgstr ""
|
||||
msgstr "테스트에 실패했습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Test Webhook"
|
||||
@@ -10757,7 +10769,7 @@ msgstr "테스트 웹후크 전송 완료"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "test@example.com"
|
||||
msgstr ""
|
||||
msgstr "test@example.com"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
@@ -11345,7 +11357,7 @@ msgstr "이 문서는 모든 수신자가 서명했습니다"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "This document has too many recipients. Please remove some recipients or contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "이 문서의 수신자가 너무 많습니다. 일부 수신자를 제거하거나, 더 많은 수신자가 필요하시면 지원팀에 문의해 주세요."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
|
||||
msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there."
|
||||
@@ -11406,7 +11418,7 @@ msgstr "이 이메일은 다른 수신자가 아직 서명하지 않은 경우,
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: packages/ui/primitives/document-flow/add-signers.tsx
|
||||
msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "이 봉투에는 수신자를 {recipientCountLimit}명보다 많이 추가할 수 없습니다. 더 많은 수신자가 필요하시면 지원팀에 문의해 주세요."
|
||||
|
||||
#: apps/remix/app/components/embed/embed-paywall.tsx
|
||||
msgid "This feature is not available on your current plan"
|
||||
@@ -11780,7 +11792,7 @@ msgstr "토큰을 찾을 수 없습니다"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Too many recipients"
|
||||
msgstr ""
|
||||
msgstr "수신자가 너무 많습니다"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
@@ -11821,23 +11833,23 @@ msgstr "문서를 다른 팀으로 전송"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Transport created."
|
||||
msgstr ""
|
||||
msgstr "전송 방식이 생성되었습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Transport deleted."
|
||||
msgstr ""
|
||||
msgstr "전송 방식이 삭제되었습니다."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type"
|
||||
msgstr ""
|
||||
msgstr "전송 방식 유형"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type cannot be changed after creation."
|
||||
msgstr ""
|
||||
msgstr "전송 방식 유형은 생성 후 변경할 수 없습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Transport updated."
|
||||
msgstr ""
|
||||
msgstr "전송 방식이 업데이트되었습니다."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
|
||||
@@ -12377,7 +12389,7 @@ msgstr "패스키로 인증하세요."
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Used by claims"
|
||||
msgstr ""
|
||||
msgstr "클레임에서 사용됨"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
|
||||
#: apps/remix/app/components/tables/document-logs-table.tsx
|
||||
@@ -12429,7 +12441,7 @@ msgstr "사용자 설정"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "사용자 이름"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
@@ -12728,7 +12740,7 @@ msgstr "나만의 공개 프로필을 원하시나요?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Warning, this email transport is currently being used by:"
|
||||
msgstr ""
|
||||
msgstr "경고: 이 이메일 전송 방식은 현재 다음에서 사용 중입니다."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
@@ -13713,7 +13725,7 @@ msgstr "이번 달 문서 업로드 한도에 도달했습니다. 요금제를
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "You have reached your document limit for this plan. Please upgrade your plan."
|
||||
msgstr ""
|
||||
msgstr "현재 요금제에서 제공되는 문서 한도에 도달했습니다. 요금제를 업그레이드해 주세요."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
@@ -14265,15 +14277,15 @@ msgstr "조직이 성공적으로 업데이트되었습니다."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit"
|
||||
msgstr ""
|
||||
msgstr "귀하의 조직이 공정 사용 한도를 초과했습니다"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit. Please contact <0>support</0> to review your plan's limits."
|
||||
msgstr ""
|
||||
msgstr "귀하의 조직이 공정 사용 한도를 초과했습니다. 요금제 한도를 검토하려면 <0>지원팀</0>에 문의해 주세요."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue."
|
||||
msgstr ""
|
||||
msgstr "귀하의 조직이 현재 요금제의 공정 사용 한도에 도달했습니다. 계속 진행하려면 조직 관리자 또는 지원팀에 문의해 주세요."
|
||||
|
||||
#: packages/email/templates/organisation-limit-exceeded.tsx
|
||||
msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled."
|
||||
@@ -14410,3 +14422,4 @@ msgstr "인증 코드:"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
|
||||
msgid "your-domain.com another-domain.com"
|
||||
msgstr "your-domain.com another-domain.com"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-06-03 06:16\n"
|
||||
"PO-Revision-Date: 2026-06-09 05:23\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Dutch\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -405,7 +405,7 @@ msgstr "{maximumEnvelopeItemCount, plural, one {Je kunt niet meer dan # item per
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}"
|
||||
msgstr ""
|
||||
msgstr "{organisationClaimCount, plural, one {# organisatieclaim} other {# organisatieclaims}}"
|
||||
|
||||
#: apps/remix/app/components/general/direct-template/direct-template-page.tsx
|
||||
msgid "{recipientActionVerb} document"
|
||||
@@ -460,7 +460,7 @@ msgstr "{signerName} heeft het document \"{documentName}\" geweigerd."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}"
|
||||
msgstr ""
|
||||
msgstr "{subscriptionClaimCount, plural, one {# abonnementclaim} other {# abonnementclaims}}"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -1292,7 +1292,7 @@ msgstr "E-maildomein toevoegen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add Email Transport"
|
||||
msgstr ""
|
||||
msgstr "E-mailtransport toevoegen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "Add fields"
|
||||
@@ -1425,7 +1425,7 @@ msgstr "Voeg deze URL toe aan de toegestane redirect-URI's van je provider"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add transport"
|
||||
msgstr ""
|
||||
msgstr "Transport toevoegen"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Additional brand information to display at the bottom of emails"
|
||||
@@ -1744,7 +1744,7 @@ msgstr "Er is een fout opgetreden tijdens het uitschakelen van de gebruiker."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "An error occurred while distributing the document."
|
||||
msgstr ""
|
||||
msgstr "Er is een fout opgetreden tijdens het distribueren van het document."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "An error occurred while enabling direct link signing."
|
||||
@@ -1959,7 +1959,7 @@ msgstr "API"
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
msgstr "API-sleutel"
|
||||
|
||||
#: apps/remix/app/components/general/claim-limit-fields.tsx
|
||||
msgid "API rate limits"
|
||||
@@ -1971,7 +1971,7 @@ msgstr "API-verzoeken"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "API requests have been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "API-verzoeken zijn tijdelijk gepauzeerd."
|
||||
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-mobile.tsx
|
||||
@@ -2044,7 +2044,7 @@ msgstr "Weet je zeker dat je de volgende claim wilt verwijderen?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete the following transport?"
|
||||
msgstr ""
|
||||
msgstr "Weet u zeker dat u het volgende transport wilt verwijderen?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete this folder?"
|
||||
@@ -2253,7 +2253,7 @@ msgstr "Achtergrondtaken"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Backport email transport"
|
||||
msgstr ""
|
||||
msgstr "E-mailtransport backporten"
|
||||
|
||||
#: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
@@ -2615,6 +2615,10 @@ msgstr "Ccers"
|
||||
msgid "Center"
|
||||
msgstr "Centreren"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Change Field Type"
|
||||
msgstr "Veldtype wijzigen"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Change language"
|
||||
msgstr "Taal wijzigen"
|
||||
@@ -2912,7 +2916,7 @@ msgstr "Configureer algemene instellingen voor de sjabloon."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure notification settings for the document."
|
||||
msgstr ""
|
||||
msgstr "Configureer de meldingsinstellingen voor het document."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure security settings for the document."
|
||||
@@ -3564,7 +3568,7 @@ msgstr "Weigeren"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Default (system mailer)"
|
||||
msgstr ""
|
||||
msgstr "Standaard (systeemmailer)"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Default border colour."
|
||||
@@ -3752,7 +3756,7 @@ msgstr "E-maildomein verwijderen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Delete Email Transport"
|
||||
msgstr ""
|
||||
msgstr "E-mailtransport verwijderen"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Delete Envelope"
|
||||
@@ -4174,7 +4178,7 @@ msgstr "Documentcreatie"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Document creation has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Het aanmaken van documenten is tijdelijk gepauzeerd."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -4690,7 +4694,7 @@ msgstr "Bijv. 100"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "e.g. Resend (free plans)"
|
||||
msgstr ""
|
||||
msgstr "bijv. Resend (gratis abonnementen)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
@@ -4708,7 +4712,7 @@ msgstr "Bewerken"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Edit Email Transport"
|
||||
msgstr ""
|
||||
msgstr "E-mailtransport bewerken"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx
|
||||
msgid "Edit Item"
|
||||
@@ -4826,7 +4830,7 @@ msgstr "E-mail aangemaakt"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings."
|
||||
msgstr ""
|
||||
msgstr "E-maildistributie moet zijn ingeschakeld op het tabblad Algemene instellingen om e-mailgerelateerde instellingen voor ontvangers te kunnen configureren."
|
||||
|
||||
#: apps/remix/app/components/general/admin-global-settings-section.tsx
|
||||
msgid "Email document settings"
|
||||
@@ -4915,7 +4919,7 @@ msgstr "E-mails afzender"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Email sending has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Het verzenden van e-mails is tijdelijk gepauzeerd."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgctxt "Audit log format"
|
||||
@@ -4953,12 +4957,12 @@ msgstr "E-mail de ondertekenaar als het document nog in behandeling is"
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Email transport"
|
||||
msgstr ""
|
||||
msgstr "E-mailtransport"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Email Transports"
|
||||
msgstr ""
|
||||
msgstr "E-mailtransports"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
|
||||
msgid "Email verification"
|
||||
@@ -5096,7 +5100,7 @@ msgstr "Bijgevoegde documenten"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Endpoint (optional)"
|
||||
msgstr ""
|
||||
msgstr "Endpoint (optioneel)"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "English"
|
||||
@@ -5462,7 +5466,7 @@ msgstr "Supportticket aanmaken mislukt"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Failed to create transport."
|
||||
msgstr ""
|
||||
msgstr "Transport aanmaken is mislukt."
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Failed to delete folder"
|
||||
@@ -5474,7 +5478,7 @@ msgstr "Abonnementsclaim verwijderen mislukt."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Failed to delete transport."
|
||||
msgstr ""
|
||||
msgstr "Transport verwijderen is mislukt."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
|
||||
msgid "Failed to download audit logs. Please try again later."
|
||||
@@ -5518,7 +5522,7 @@ msgstr "Instellingen opslaan is mislukt."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Failed to save transport."
|
||||
msgstr ""
|
||||
msgstr "Transport opslaan is mislukt."
|
||||
|
||||
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
|
||||
msgid "Failed to sign out all sessions"
|
||||
@@ -5579,7 +5583,7 @@ msgstr "Mislukt: {failedCount}"
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Fair use limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "Limiet voor redelijk gebruik overschreden."
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/components/tables/admin-claims-table.tsx
|
||||
@@ -5669,7 +5673,7 @@ msgstr "Bestandsgrootte overschrijdt de limiet van {APP_DOCUMENT_UPLOAD_SIZE_LIM
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new email transport."
|
||||
msgstr ""
|
||||
msgstr "Vul de details in om een nieuw e-mailtransport aan te maken."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new subscription claim."
|
||||
@@ -5789,15 +5793,15 @@ msgstr "Frans"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "Van"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
msgstr "Van-adres"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From name"
|
||||
msgstr ""
|
||||
msgstr "Van-naam"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
|
||||
#: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx
|
||||
@@ -6074,7 +6078,7 @@ msgstr "Horizontaal"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
msgstr "Host"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "How long recipients have to complete this document after it is sent. Uses the team default when set to inherit."
|
||||
@@ -6588,7 +6592,7 @@ msgstr "Laat leeg om over te nemen van de organisatie."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Leave blank to keep current"
|
||||
msgstr ""
|
||||
msgstr "Laat leeg om de huidige te behouden"
|
||||
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
msgid "Leave organisation"
|
||||
@@ -6758,7 +6762,7 @@ msgstr "Beheer een aangepast SSO-inlogportaal voor uw organisatie."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Manage all email transports"
|
||||
msgstr ""
|
||||
msgstr "Alle e-mailtransports beheren"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx
|
||||
msgid "Manage all organisations you are currently associated with."
|
||||
@@ -7043,7 +7047,7 @@ msgstr "Ontvangers wijzigen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Modify the details of the email transport."
|
||||
msgstr ""
|
||||
msgstr "Wijzig de details van het e-mailtransport."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Modify the details of the subscription claim."
|
||||
@@ -7293,6 +7297,10 @@ msgstr "Er zijn geen e-mailadressen geconfigureerd voor dit domein."
|
||||
msgid "No features enabled"
|
||||
msgstr "Geen functies ingeschakeld"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "No field type matching this description was found."
|
||||
msgstr "Er is geen veldtype gevonden dat overeenkomt met deze beschrijving."
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "No fields were detected in your document."
|
||||
msgstr "Er zijn geen velden in uw document gedetecteerd."
|
||||
@@ -7483,7 +7491,7 @@ msgstr "Niets te doen"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "Meldingen"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-number-field.tsx
|
||||
@@ -7788,7 +7796,7 @@ msgstr "Organisaties waarvan de gebruiker lid is."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Organisations without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Organisaties zonder transport gebruiken de standaard systeemmailer."
|
||||
|
||||
#: apps/remix/app/components/general/folder/folder-card.tsx
|
||||
msgid "Organise your documents"
|
||||
@@ -8083,7 +8091,7 @@ msgstr "Placeholder"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
msgid "Plans without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Abonnementen zonder transport gebruiken de standaard systeemmailer."
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -8310,7 +8318,7 @@ msgstr "Pools"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
msgstr "Poort"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "Portuguese (Brazil)"
|
||||
@@ -9205,7 +9213,7 @@ msgstr "Opslaan als sjabloon"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
msgstr "Wijzigingen opslaan"
|
||||
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
@@ -9261,7 +9269,7 @@ msgstr "Zoeken op naam of e‑mail"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Search by name or from address"
|
||||
msgstr ""
|
||||
msgstr "Zoek op naam of van-adres"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
@@ -9336,6 +9344,10 @@ msgstr "Selecteren"
|
||||
msgid "Select a destination for this folder."
|
||||
msgstr "Selecteer een bestemming voor deze map."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Select a field type"
|
||||
msgstr "Selecteer een veldtype"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
msgid "Select a folder to move this document to."
|
||||
msgstr "Selecteer een map om dit document naar te verplaatsen."
|
||||
@@ -9549,7 +9561,7 @@ msgstr "Verzenden"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send a test email using this transport to verify the configuration."
|
||||
msgstr ""
|
||||
msgstr "Stuur een testmail met dit transport om de configuratie te verifiëren."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Send a test webhook with sample data to verify your integration is working correctly."
|
||||
@@ -9609,11 +9621,11 @@ msgstr "Verzendstatus"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Send test"
|
||||
msgstr ""
|
||||
msgstr "Test verzenden"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send Test Email"
|
||||
msgstr ""
|
||||
msgstr "Testmail verzenden"
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@@ -9731,11 +9743,11 @@ msgstr "Toon sjablonen in je openbare profiel zodat je publiek snel kan ondertek
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage"
|
||||
msgstr ""
|
||||
msgstr "Gebruik weergeven"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage with quotas"
|
||||
msgstr ""
|
||||
msgstr "Gebruik met quota weergeven"
|
||||
|
||||
#: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
@@ -10737,11 +10749,11 @@ msgstr "Test"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test email sent."
|
||||
msgstr ""
|
||||
msgstr "Testmail verzonden."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test failed."
|
||||
msgstr ""
|
||||
msgstr "Test mislukt."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Test Webhook"
|
||||
@@ -10757,7 +10769,7 @@ msgstr "Testwebhook verzonden"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "test@example.com"
|
||||
msgstr ""
|
||||
msgstr "test@example.com"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
@@ -11345,7 +11357,7 @@ msgstr "Dit document is door alle ontvangers ondertekend"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "This document has too many recipients. Please remove some recipients or contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Dit document heeft te veel ontvangers. Verwijder enkele ontvangers of neem contact op met support als u er meer nodig heeft."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
|
||||
msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there."
|
||||
@@ -11406,7 +11418,7 @@ msgstr "Deze e-mail wordt verzonden naar de ontvanger die zojuist het document h
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: packages/ui/primitives/document-flow/add-signers.tsx
|
||||
msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Deze envelop kan niet meer dan {recipientCountLimit} ontvangers hebben. Neem contact op met support als u er meer nodig heeft."
|
||||
|
||||
#: apps/remix/app/components/embed/embed-paywall.tsx
|
||||
msgid "This feature is not available on your current plan"
|
||||
@@ -11780,7 +11792,7 @@ msgstr "Token niet gevonden"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Too many recipients"
|
||||
msgstr ""
|
||||
msgstr "Te veel ontvangers"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
@@ -11821,23 +11833,23 @@ msgstr "Documenten overdragen naar een ander team"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Transport created."
|
||||
msgstr ""
|
||||
msgstr "Transport aangemaakt."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Transport deleted."
|
||||
msgstr ""
|
||||
msgstr "Transport verwijderd."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type"
|
||||
msgstr ""
|
||||
msgstr "Transporttype"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type cannot be changed after creation."
|
||||
msgstr ""
|
||||
msgstr "Transporttype kan na het aanmaken niet meer worden gewijzigd."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Transport updated."
|
||||
msgstr ""
|
||||
msgstr "Transport bijgewerkt."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
|
||||
@@ -12377,7 +12389,7 @@ msgstr "Gebruik je passkey voor authenticatie"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Used by claims"
|
||||
msgstr ""
|
||||
msgstr "Gebruikt door claims"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
|
||||
#: apps/remix/app/components/tables/document-logs-table.tsx
|
||||
@@ -12429,7 +12441,7 @@ msgstr "Gebruikersinstellingen"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "Gebruikersnaam"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
@@ -12728,7 +12740,7 @@ msgstr "Wil je een eigen openbaar profiel?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Warning, this email transport is currently being used by:"
|
||||
msgstr ""
|
||||
msgstr "Waarschuwing, dit e-mailtransport wordt momenteel gebruikt door:"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
@@ -13713,7 +13725,7 @@ msgstr "Je hebt je documentlimiet voor deze maand bereikt. Upgrade je abonnement
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "You have reached your document limit for this plan. Please upgrade your plan."
|
||||
msgstr ""
|
||||
msgstr "U heeft uw documentlimiet voor dit abonnement bereikt. Upgrade uw abonnement."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
@@ -14265,15 +14277,15 @@ msgstr "Je organisatie is succesvol bijgewerkt."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit"
|
||||
msgstr ""
|
||||
msgstr "Uw organisatie heeft een redelijk-gebruikslimiet overschreden"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit. Please contact <0>support</0> to review your plan's limits."
|
||||
msgstr ""
|
||||
msgstr "Uw organisatie heeft een redelijk-gebruikslimiet overschreden. Neem contact op met <0>support</0> om de limieten van uw abonnement te laten controleren."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue."
|
||||
msgstr ""
|
||||
msgstr "Uw organisatie heeft de redelijk-gebruikslimiet van haar abonnement bereikt. Neem contact op met de beheerder van uw organisatie of met support om door te gaan."
|
||||
|
||||
#: packages/email/templates/organisation-limit-exceeded.tsx
|
||||
msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled."
|
||||
@@ -14410,3 +14422,4 @@ msgstr "Uw verificatiecode:"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
|
||||
msgid "your-domain.com another-domain.com"
|
||||
msgstr "your-domain.com another-domain.com"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: pl\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-06-05 21:34\n"
|
||||
"PO-Revision-Date: 2026-06-09 05:23\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Polish\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
@@ -359,7 +359,7 @@ msgstr "Użytkownik {inviterName} anulował dokument<0/>„{documentName}”"
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
msgid "{inviterName} has invited you to {0}<0/>\"{documentName}\""
|
||||
msgstr "Sprawdź i {0} dokument „{documentName}” utworzony przez użytkownika {inviterName}"
|
||||
msgstr "Sprawdź i {0} dokument „{documentName}}” utworzony przez użytkownika {inviterName}"
|
||||
|
||||
#: packages/email/templates/document-invite.tsx
|
||||
msgid "{inviterName} has invited you to {action} {documentName}"
|
||||
@@ -405,7 +405,7 @@ msgstr "{maximumEnvelopeItemCount, plural, one {Nie możesz przesłać więcej n
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}"
|
||||
msgstr ""
|
||||
msgstr "{organisationClaimCount, plural, one {# roszczenie organizacji} few {# roszczenia organizacji} many {# roszczeń organizacji} other {# roszczenia organizacji}}"
|
||||
|
||||
#: apps/remix/app/components/general/direct-template/direct-template-page.tsx
|
||||
msgid "{recipientActionVerb} document"
|
||||
@@ -460,7 +460,7 @@ msgstr "Użytkownik {signerName} odrzucił dokument „{documentName}”."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}"
|
||||
msgstr ""
|
||||
msgstr "{subscriptionClaimCount, plural, one {# roszczenie subskrypcji} few {# roszczenia subskrypcji} many {# roszczeń subskrypcji} other {# roszczenia subskrypcji}}"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -1292,7 +1292,7 @@ msgstr "Dodaj domenę"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Dodaj transport e-mailowy"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "Add fields"
|
||||
@@ -1425,7 +1425,7 @@ msgstr "Dodaj ten adres URL do dozwolonych adresów przekierowania Twojego dosta
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add transport"
|
||||
msgstr ""
|
||||
msgstr "Dodaj transport"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Additional brand information to display at the bottom of emails"
|
||||
@@ -1744,7 +1744,7 @@ msgstr "Wystąpił błąd podczas wyłączania użytkownika."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "An error occurred while distributing the document."
|
||||
msgstr ""
|
||||
msgstr "Wystąpił błąd podczas dystrybucji dokumentu."
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "An error occurred while enabling direct link signing."
|
||||
@@ -1959,7 +1959,7 @@ msgstr "API"
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
msgstr "Klucz API"
|
||||
|
||||
#: apps/remix/app/components/general/claim-limit-fields.tsx
|
||||
msgid "API rate limits"
|
||||
@@ -1971,7 +1971,7 @@ msgstr "Żądania API"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "API requests have been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Żądania API zostały tymczasowo wstrzymane."
|
||||
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-mobile.tsx
|
||||
@@ -2044,7 +2044,7 @@ msgstr "Czy na pewno chcesz usunąć następującą subskrypcję?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete the following transport?"
|
||||
msgstr ""
|
||||
msgstr "Czy na pewno chcesz usunąć następujący transport?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete this folder?"
|
||||
@@ -2253,7 +2253,7 @@ msgstr "Zadania w tle"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Backport email transport"
|
||||
msgstr ""
|
||||
msgstr "Backport transportu e-mailowego"
|
||||
|
||||
#: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
@@ -2615,6 +2615,10 @@ msgstr "Pobierający kopię"
|
||||
msgid "Center"
|
||||
msgstr "Wyśrodkuj"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Change Field Type"
|
||||
msgstr "Zmień typ pola"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Change language"
|
||||
msgstr "Zmień język"
|
||||
@@ -2912,7 +2916,7 @@ msgstr "Skonfiguruj ogólne ustawienia szablonu."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure notification settings for the document."
|
||||
msgstr ""
|
||||
msgstr "Skonfiguruj ustawienia powiadomień dla dokumentu."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure security settings for the document."
|
||||
@@ -3564,7 +3568,7 @@ msgstr "Odrzuć"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Default (system mailer)"
|
||||
msgstr ""
|
||||
msgstr "Domyślny (systemowy mailer)"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Default border colour."
|
||||
@@ -3752,7 +3756,7 @@ msgstr "Usuń domenę"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Delete Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Usuń transport e-mailowy"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Delete Envelope"
|
||||
@@ -4174,7 +4178,7 @@ msgstr "Tworzenie dokumentu"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Document creation has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Tworzenie dokumentów zostało tymczasowo wstrzymane."
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -4690,7 +4694,7 @@ msgstr "Np. 100"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "e.g. Resend (free plans)"
|
||||
msgstr ""
|
||||
msgstr "np. Resend (plany bezpłatne)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
@@ -4708,7 +4712,7 @@ msgstr "Edytuj"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Edit Email Transport"
|
||||
msgstr ""
|
||||
msgstr "Edytuj transport e-mailowy"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx
|
||||
msgid "Edit Item"
|
||||
@@ -4826,7 +4830,7 @@ msgstr "Adres e-mail został utworzony"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings."
|
||||
msgstr ""
|
||||
msgstr "Aby móc skonfigurować ustawienia dotyczące wiadomości e-mail odbiorców, należy włączyć dystrybucję e-mail w zakładce ustawień ogólnych."
|
||||
|
||||
#: apps/remix/app/components/general/admin-global-settings-section.tsx
|
||||
msgid "Email document settings"
|
||||
@@ -4915,7 +4919,7 @@ msgstr "Adres e-mail nadawcy"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Email sending has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "Wysyłanie wiadomości e-mail zostało tymczasowo wstrzymane."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgctxt "Audit log format"
|
||||
@@ -4953,12 +4957,12 @@ msgstr "Wyślij podpisującemu wiadomość, jeśli dokument jest nadal oczekują
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Email transport"
|
||||
msgstr ""
|
||||
msgstr "Transport e-mailowy"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Email Transports"
|
||||
msgstr ""
|
||||
msgstr "Transporty e-mailowe"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
|
||||
msgid "Email verification"
|
||||
@@ -5096,7 +5100,7 @@ msgstr "Załączniki"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Endpoint (optional)"
|
||||
msgstr ""
|
||||
msgstr "Endpoint (opcjonalnie)"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "English"
|
||||
@@ -5462,7 +5466,7 @@ msgstr "Nie udało się utworzyć zgłoszenia"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Failed to create transport."
|
||||
msgstr ""
|
||||
msgstr "Nie udało się utworzyć transportu."
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Failed to delete folder"
|
||||
@@ -5474,7 +5478,7 @@ msgstr "Nie udało się usunąć subskrypcji."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Failed to delete transport."
|
||||
msgstr ""
|
||||
msgstr "Nie udało się usunąć transportu."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
|
||||
msgid "Failed to download audit logs. Please try again later."
|
||||
@@ -5518,7 +5522,7 @@ msgstr "Nie udało się zapisać ustawień."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Failed to save transport."
|
||||
msgstr ""
|
||||
msgstr "Nie udało się zapisać transportu."
|
||||
|
||||
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
|
||||
msgid "Failed to sign out all sessions"
|
||||
@@ -5579,7 +5583,7 @@ msgstr "Niepowodzenie: {failedCount}"
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Fair use limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "Przekroczono limit dozwolonego użycia."
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/components/tables/admin-claims-table.tsx
|
||||
@@ -5669,7 +5673,7 @@ msgstr "Plik nie może być większy niż {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new email transport."
|
||||
msgstr ""
|
||||
msgstr "Uzupełnij szczegóły, aby utworzyć nowy transport e-mailowy."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new subscription claim."
|
||||
@@ -5789,15 +5793,15 @@ msgstr "Francuski"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "Od"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
msgstr "Adres nadawcy"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From name"
|
||||
msgstr ""
|
||||
msgstr "Nazwa nadawcy"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
|
||||
#: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx
|
||||
@@ -6074,7 +6078,7 @@ msgstr "Poziomo"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
msgstr "Host"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "How long recipients have to complete this document after it is sent. Uses the team default when set to inherit."
|
||||
@@ -6588,7 +6592,7 @@ msgstr "Pozostaw puste, aby odziedziczyć z organizacji."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Leave blank to keep current"
|
||||
msgstr ""
|
||||
msgstr "Pozostaw puste, aby zachować obecne"
|
||||
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
msgid "Leave organisation"
|
||||
@@ -6758,7 +6762,7 @@ msgstr "Zarządzaj niestandardowym logowaniem SSO dla swojej organizacji."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Manage all email transports"
|
||||
msgstr ""
|
||||
msgstr "Zarządzaj wszystkimi transportami e-mailowymi"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx
|
||||
msgid "Manage all organisations you are currently associated with."
|
||||
@@ -7043,7 +7047,7 @@ msgstr "Edytuj odbiorców"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Modify the details of the email transport."
|
||||
msgstr ""
|
||||
msgstr "Zmień szczegóły transportu e-mailowego."
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Modify the details of the subscription claim."
|
||||
@@ -7293,6 +7297,10 @@ msgstr "Brak skonfigurowanych adresów dla tej domeny."
|
||||
msgid "No features enabled"
|
||||
msgstr "Brak włączonych funkcji"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "No field type matching this description was found."
|
||||
msgstr "Nie znaleziono typu pola pasującego do tego opisu."
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "No fields were detected in your document."
|
||||
msgstr "Nie wykryto żadnych pól."
|
||||
@@ -7483,7 +7491,7 @@ msgstr "Nie masz nic do zrobienia"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "Powiadomienia"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-number-field.tsx
|
||||
@@ -7788,7 +7796,7 @@ msgstr "Organizacje użytkownika."
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Organisations without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Organizacje bez zdefiniowanego transportu używają domyślnego systemowego mailera."
|
||||
|
||||
#: apps/remix/app/components/general/folder/folder-card.tsx
|
||||
msgid "Organise your documents"
|
||||
@@ -8083,7 +8091,7 @@ msgstr "Domyślny tekst"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
msgid "Plans without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "Plany bez zdefiniowanego transportu używają domyślnego systemowego mailera."
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -8310,7 +8318,7 @@ msgstr "Polski"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
msgstr "Port"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "Portuguese (Brazil)"
|
||||
@@ -9205,7 +9213,7 @@ msgstr "Zapisz jako szablon"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
msgstr "Zapisz zmiany"
|
||||
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
@@ -9261,7 +9269,7 @@ msgstr "Szukaj nazwy lub adresu e-mail"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Search by name or from address"
|
||||
msgstr ""
|
||||
msgstr "Szukaj po nazwie lub adresie nadawcy"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
@@ -9336,6 +9344,10 @@ msgstr "Wybierz"
|
||||
msgid "Select a destination for this folder."
|
||||
msgstr "Wybierz miejsce docelowe dla tego folderu."
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Select a field type"
|
||||
msgstr "Wybierz rodzaj pola"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
msgid "Select a folder to move this document to."
|
||||
msgstr "Wybierz folder, do którego chcesz przenieść dokument."
|
||||
@@ -9549,7 +9561,7 @@ msgstr "Wyślij"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send a test email using this transport to verify the configuration."
|
||||
msgstr ""
|
||||
msgstr "Wyślij wiadomość testową przy użyciu tego transportu, aby zweryfikować konfigurację."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Send a test webhook with sample data to verify your integration is working correctly."
|
||||
@@ -9609,11 +9621,11 @@ msgstr "Status wysyłki"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Send test"
|
||||
msgstr ""
|
||||
msgstr "Wyślij test"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send Test Email"
|
||||
msgstr ""
|
||||
msgstr "Wyślij testową wiadomość e-mail"
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@@ -9731,11 +9743,11 @@ msgstr "Pokaż szablony w profilu publicznym, aby szybko podpisać dokument"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage"
|
||||
msgstr ""
|
||||
msgstr "Pokaż użycie"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage with quotas"
|
||||
msgstr ""
|
||||
msgstr "Pokaż użycie z limitami"
|
||||
|
||||
#: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
@@ -10737,11 +10749,11 @@ msgstr "Testuj"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test email sent."
|
||||
msgstr ""
|
||||
msgstr "Wiadomość testowa została wysłana."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test failed."
|
||||
msgstr ""
|
||||
msgstr "Test nie powiódł się."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Test Webhook"
|
||||
@@ -10757,7 +10769,7 @@ msgstr "Testowy webhook został wysłany"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "test@example.com"
|
||||
msgstr ""
|
||||
msgstr "test@example.com"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
@@ -11345,7 +11357,7 @@ msgstr "Dokument został podpisany przez wszystkich odbiorców"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "This document has too many recipients. Please remove some recipients or contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Ten dokument ma zbyt wielu adresatów. Usuń część adresatów lub skontaktuj się z pomocą techniczną, jeśli potrzebujesz większej liczby."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
|
||||
msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there."
|
||||
@@ -11406,7 +11418,7 @@ msgstr "Zostanie wysłana do odbiorcy, który właśnie podpisał dokument, gdy
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: packages/ui/primitives/document-flow/add-signers.tsx
|
||||
msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "Ta koperta nie może mieć więcej niż {recipientCountLimit} adresatów. Skontaktuj się z pomocą techniczną, jeśli potrzebujesz większej liczby."
|
||||
|
||||
#: apps/remix/app/components/embed/embed-paywall.tsx
|
||||
msgid "This feature is not available on your current plan"
|
||||
@@ -11527,9 +11539,7 @@ msgstr "Zostanie wysłana do właściciela po zakończeniu dokumentu."
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx
|
||||
msgid "This will be sent to the document owner when a recipient's signing window has expired."
|
||||
msgstr ""
|
||||
"Zostanie wysłana do właściciela dokumentu, gdy minie czas na podpisanie przez odbiorcę\n"
|
||||
""
|
||||
msgstr "Zostanie wysłana do właściciela dokumentu, gdy minie czas na podpisanie przez odbiorcę\n"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-email-domains-table.tsx
|
||||
msgid "This will check and sync the status of all email domains for this organisation"
|
||||
@@ -11782,7 +11792,7 @@ msgstr "Token nie został znaleziony"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Too many recipients"
|
||||
msgstr ""
|
||||
msgstr "Zbyt wielu adresatów"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
@@ -11823,23 +11833,23 @@ msgstr "Przenieś dokumenty do innego zespołu"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Transport created."
|
||||
msgstr ""
|
||||
msgstr "Transport został utworzony."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Transport deleted."
|
||||
msgstr ""
|
||||
msgstr "Transport został usunięty."
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type"
|
||||
msgstr ""
|
||||
msgstr "Typ transportu"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type cannot be changed after creation."
|
||||
msgstr ""
|
||||
msgstr "Typu transportu nie można zmienić po utworzeniu."
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Transport updated."
|
||||
msgstr ""
|
||||
msgstr "Transport został zaktualizowany."
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
|
||||
@@ -12379,7 +12389,7 @@ msgstr "Użyj klucza dostępu do uwierzytelniania"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Used by claims"
|
||||
msgstr ""
|
||||
msgstr "Używany przez roszczenia"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
|
||||
#: apps/remix/app/components/tables/document-logs-table.tsx
|
||||
@@ -12431,7 +12441,7 @@ msgstr "Ustawienia użytkownika"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "Nazwa użytkownika"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
@@ -12730,7 +12740,7 @@ msgstr "Chcesz mieć profil publiczny?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Warning, this email transport is currently being used by:"
|
||||
msgstr ""
|
||||
msgstr "Uwaga, ten transport e-mail jest obecnie używany przez:"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
@@ -13715,7 +13725,7 @@ msgstr "Osiągnięto maksymalną miesięczną liczbę dokumentów. Zaktualizuj p
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "You have reached your document limit for this plan. Please upgrade your plan."
|
||||
msgstr ""
|
||||
msgstr "Osiągnięto limit liczby dokumentów w tym planie. Zaktualizuj swój plan."
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
@@ -14267,15 +14277,15 @@ msgstr "Organizacja została zaktualizowana."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit"
|
||||
msgstr ""
|
||||
msgstr "Twoja organizacja przekroczyła limit uczciwego użytkowania."
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit. Please contact <0>support</0> to review your plan's limits."
|
||||
msgstr ""
|
||||
msgstr "Twoja organizacja przekroczyła limit uczciwego użytkowania. Skontaktuj się z <0>pomocą techniczną</0>, aby przejrzeć limity swojego planu."
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue."
|
||||
msgstr ""
|
||||
msgstr "Twoja organizacja osiągnęła limit uczciwego użytkowania w swoim planie. Skontaktuj się z administratorem organizacji lub pomocą techniczną, aby kontynuować."
|
||||
|
||||
#: packages/email/templates/organisation-limit-exceeded.tsx
|
||||
msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled."
|
||||
@@ -14412,3 +14422,4 @@ msgstr "Twój kod weryfikacyjny:"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
|
||||
msgid "your-domain.com another-domain.com"
|
||||
msgstr "your-domain.com another-domain.com"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: zh\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-06-03 06:16\n"
|
||||
"PO-Revision-Date: 2026-06-09 05:23\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -405,7 +405,7 @@ msgstr "{maximumEnvelopeItemCount, plural, other {每个信封最多只能上传
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}"
|
||||
msgstr ""
|
||||
msgstr "{organisationClaimCount, plural, other {# 机构认领}}"
|
||||
|
||||
#: apps/remix/app/components/general/direct-template/direct-template-page.tsx
|
||||
msgid "{recipientActionVerb} document"
|
||||
@@ -460,7 +460,7 @@ msgstr "{signerName} 已拒签文档“{documentName}”。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}"
|
||||
msgstr ""
|
||||
msgstr "{subscriptionClaimCount, plural, other {# 订阅认领}}"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -1292,7 +1292,7 @@ msgstr "添加邮箱域名"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add Email Transport"
|
||||
msgstr ""
|
||||
msgstr "添加电子邮件传输方式"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "Add fields"
|
||||
@@ -1425,7 +1425,7 @@ msgstr "将此 URL 添加到您的身份提供商的允许重定向 URI 中"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Add transport"
|
||||
msgstr ""
|
||||
msgstr "添加传输方式"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Additional brand information to display at the bottom of emails"
|
||||
@@ -1744,7 +1744,7 @@ msgstr "禁用用户时发生错误。"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "An error occurred while distributing the document."
|
||||
msgstr ""
|
||||
msgstr "分发文档时发生错误。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx
|
||||
msgid "An error occurred while enabling direct link signing."
|
||||
@@ -1959,7 +1959,7 @@ msgstr "API"
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "API key"
|
||||
msgstr ""
|
||||
msgstr "API 密钥"
|
||||
|
||||
#: apps/remix/app/components/general/claim-limit-fields.tsx
|
||||
msgid "API rate limits"
|
||||
@@ -1971,7 +1971,7 @@ msgstr "API 请求"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "API requests have been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "API 请求已被暂时暂停"
|
||||
|
||||
#: apps/remix/app/components/general/settings-nav-desktop.tsx
|
||||
#: apps/remix/app/components/general/settings-nav-mobile.tsx
|
||||
@@ -2044,7 +2044,7 @@ msgstr "确定要删除以下声明吗?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete the following transport?"
|
||||
msgstr ""
|
||||
msgstr "确定要删除以下传输方式吗?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Are you sure you want to delete this folder?"
|
||||
@@ -2253,7 +2253,7 @@ msgstr "后台任务"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Backport email transport"
|
||||
msgstr ""
|
||||
msgstr "回移电子邮件传输方式"
|
||||
|
||||
#: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx
|
||||
#: apps/remix/app/components/forms/signin.tsx
|
||||
@@ -2615,6 +2615,10 @@ msgstr "抄送人"
|
||||
msgid "Center"
|
||||
msgstr "居中"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Change Field Type"
|
||||
msgstr "更改字段类型"
|
||||
|
||||
#: apps/remix/app/components/general/app-command-menu.tsx
|
||||
msgid "Change language"
|
||||
msgstr "更改语言"
|
||||
@@ -2912,7 +2916,7 @@ msgstr "配置模板的一般设置。"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure notification settings for the document."
|
||||
msgstr ""
|
||||
msgstr "为该文档配置通知设置。"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Configure security settings for the document."
|
||||
@@ -3564,7 +3568,7 @@ msgstr "拒绝"
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Default (system mailer)"
|
||||
msgstr ""
|
||||
msgstr "默认(系统邮件程序)"
|
||||
|
||||
#: apps/remix/app/components/forms/branding-preferences-form.tsx
|
||||
msgid "Default border colour."
|
||||
@@ -3752,7 +3756,7 @@ msgstr "删除邮箱域名"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Delete Email Transport"
|
||||
msgstr ""
|
||||
msgstr "删除电子邮件传输方式"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx
|
||||
msgid "Delete Envelope"
|
||||
@@ -4174,7 +4178,7 @@ msgstr "文档创建"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Document creation has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "文档创建已被暂时暂停"
|
||||
|
||||
#: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx
|
||||
@@ -4690,7 +4694,7 @@ msgstr "例如:100"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "e.g. Resend (free plans)"
|
||||
msgstr ""
|
||||
msgstr "例如:Resend(免费套餐)"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-page-view-button.tsx
|
||||
#: apps/remix/app/components/general/document/document-page-view-dropdown.tsx
|
||||
@@ -4708,7 +4712,7 @@ msgstr "编辑"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Edit Email Transport"
|
||||
msgstr ""
|
||||
msgstr "编辑电子邮件传输方式"
|
||||
|
||||
#: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx
|
||||
msgid "Edit Item"
|
||||
@@ -4826,7 +4830,7 @@ msgstr "邮箱已创建"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings."
|
||||
msgstr ""
|
||||
msgstr "要配置收件人电子邮件相关设置,必须先在“常规设置”选项卡中启用电子邮件分发。"
|
||||
|
||||
#: apps/remix/app/components/general/admin-global-settings-section.tsx
|
||||
msgid "Email document settings"
|
||||
@@ -4915,7 +4919,7 @@ msgstr "邮件发件人"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Email sending has been temporarily paused"
|
||||
msgstr ""
|
||||
msgstr "电子邮件发送已被暂时暂停"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts
|
||||
msgctxt "Audit log format"
|
||||
@@ -4953,12 +4957,12 @@ msgstr "如果文档仍在待处理状态,则向签署人发送电子邮件通
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Email transport"
|
||||
msgstr ""
|
||||
msgstr "电子邮件传输方式"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Email Transports"
|
||||
msgstr ""
|
||||
msgstr "电子邮件传输方式"
|
||||
|
||||
#: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx
|
||||
msgid "Email verification"
|
||||
@@ -5096,7 +5100,7 @@ msgstr "随附文件"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Endpoint (optional)"
|
||||
msgstr ""
|
||||
msgstr "端点(可选)"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "English"
|
||||
@@ -5462,7 +5466,7 @@ msgstr "创建支持工单失败"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Failed to create transport."
|
||||
msgstr ""
|
||||
msgstr "创建传输方式失败。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/folder-delete-dialog.tsx
|
||||
msgid "Failed to delete folder"
|
||||
@@ -5474,7 +5478,7 @@ msgstr "删除订阅声明失败。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Failed to delete transport."
|
||||
msgstr ""
|
||||
msgstr "删除传输方式失败。"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx
|
||||
msgid "Failed to download audit logs. Please try again later."
|
||||
@@ -5518,7 +5522,7 @@ msgstr "保存设置失败。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Failed to save transport."
|
||||
msgstr ""
|
||||
msgstr "保存传输方式失败。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx
|
||||
msgid "Failed to sign out all sessions"
|
||||
@@ -5579,7 +5583,7 @@ msgstr "失败:{failedCount}"
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Fair use limit exceeded"
|
||||
msgstr ""
|
||||
msgstr "已超出合理使用限制"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
#: apps/remix/app/components/tables/admin-claims-table.tsx
|
||||
@@ -5669,7 +5673,7 @@ msgstr "文件大小超过 {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB 限制"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new email transport."
|
||||
msgstr ""
|
||||
msgstr "填写详细信息以创建新的电子邮件传输方式。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-create-dialog.tsx
|
||||
msgid "Fill in the details to create a new subscription claim."
|
||||
@@ -5789,15 +5793,15 @@ msgstr "法语"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "发件人"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
msgstr "发件地址"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "From name"
|
||||
msgstr ""
|
||||
msgstr "发件人名称"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-direct-template-client-page.tsx
|
||||
#: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx
|
||||
@@ -6074,7 +6078,7 @@ msgstr "水平"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
msgstr "主机"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "How long recipients have to complete this document after it is sent. Uses the team default when set to inherit."
|
||||
@@ -6588,7 +6592,7 @@ msgstr "留空以继承组织设置。"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Leave blank to keep current"
|
||||
msgstr ""
|
||||
msgstr "留空则保持当前设置"
|
||||
|
||||
#: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx
|
||||
msgid "Leave organisation"
|
||||
@@ -6758,7 +6762,7 @@ msgstr "为您的组织管理自定义 SSO 登录门户。"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Manage all email transports"
|
||||
msgstr ""
|
||||
msgstr "管理所有电子邮件传输方式"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx
|
||||
msgid "Manage all organisations you are currently associated with."
|
||||
@@ -7043,7 +7047,7 @@ msgstr "修改收件人"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Modify the details of the email transport."
|
||||
msgstr ""
|
||||
msgstr "修改该电子邮件传输方式的详细信息。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/claim-update-dialog.tsx
|
||||
msgid "Modify the details of the subscription claim."
|
||||
@@ -7293,6 +7297,10 @@ msgstr "此域名尚未配置任何电子邮件。"
|
||||
msgid "No features enabled"
|
||||
msgstr "未启用任何功能"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "No field type matching this description was found."
|
||||
msgstr "未找到与此描述匹配的字段类型。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
msgid "No fields were detected in your document."
|
||||
msgstr "在您的文档中未检测到任何字段。"
|
||||
@@ -7483,7 +7491,7 @@ msgstr "暂无待处理事项"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx
|
||||
msgid "Notifications"
|
||||
msgstr ""
|
||||
msgstr "通知"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-number-field.tsx
|
||||
@@ -7788,7 +7796,7 @@ msgstr "用户所属的组织。"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx
|
||||
msgid "Organisations without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "没有配置传输方式的组织将使用系统默认邮件程序。"
|
||||
|
||||
#: apps/remix/app/components/general/folder/folder-card.tsx
|
||||
msgid "Organise your documents"
|
||||
@@ -8083,7 +8091,7 @@ msgstr "占位符"
|
||||
|
||||
#: apps/remix/app/components/forms/subscription-claim-form.tsx
|
||||
msgid "Plans without a transport use the system default mailer."
|
||||
msgstr ""
|
||||
msgstr "没有配置传输方式的套餐将使用系统默认邮件程序。"
|
||||
|
||||
#. placeholder {0}: _(actionVerb).toLowerCase()
|
||||
#: packages/email/template-components/template-document-invite.tsx
|
||||
@@ -8310,7 +8318,7 @@ msgstr "波兰语"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
msgstr "端口"
|
||||
|
||||
#: packages/lib/constants/i18n.ts
|
||||
msgid "Portuguese (Brazil)"
|
||||
@@ -9205,7 +9213,7 @@ msgstr "另存为模板"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
msgstr "保存更改"
|
||||
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
#: packages/lib/client-only/providers/envelope-editor-provider.tsx
|
||||
@@ -9261,7 +9269,7 @@ msgstr "按姓名或邮箱搜索"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx
|
||||
msgid "Search by name or from address"
|
||||
msgstr ""
|
||||
msgstr "按名称或发件地址搜索"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx
|
||||
msgid "Search by organisation ID, name, customer ID or owner email"
|
||||
@@ -9336,6 +9344,10 @@ msgstr "选择"
|
||||
msgid "Select a destination for this folder."
|
||||
msgstr "请选择此文件夹的目标位置。"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx
|
||||
msgid "Select a field type"
|
||||
msgstr "选择字段类型"
|
||||
|
||||
#: apps/remix/app/components/dialogs/document-move-to-folder-dialog.tsx
|
||||
msgid "Select a folder to move this document to."
|
||||
msgstr "选择一个文件夹以将此文档移动到其中。"
|
||||
@@ -9549,7 +9561,7 @@ msgstr "发送"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send a test email using this transport to verify the configuration."
|
||||
msgstr ""
|
||||
msgstr "使用此传输方式发送测试电子邮件以验证配置。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Send a test webhook with sample data to verify your integration is working correctly."
|
||||
@@ -9609,11 +9621,11 @@ msgstr "发送状态"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Send test"
|
||||
msgstr ""
|
||||
msgstr "发送测试"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Send Test Email"
|
||||
msgstr ""
|
||||
msgstr "发送测试邮件"
|
||||
|
||||
#: apps/remix/app/components/tables/documents-table.tsx
|
||||
#: apps/remix/app/components/tables/inbox-table.tsx
|
||||
@@ -9731,11 +9743,11 @@ msgstr "在公开资料中展示模板,方便你的用户快速签署上手"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage"
|
||||
msgstr ""
|
||||
msgstr "显示使用情况"
|
||||
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx
|
||||
msgid "Show usage with quotas"
|
||||
msgstr ""
|
||||
msgstr "显示使用情况和配额"
|
||||
|
||||
#: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx
|
||||
@@ -10737,11 +10749,11 @@ msgstr "测试"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test email sent."
|
||||
msgstr ""
|
||||
msgstr "测试电子邮件已发送。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "Test failed."
|
||||
msgstr ""
|
||||
msgstr "测试失败。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-test-dialog.tsx
|
||||
msgid "Test Webhook"
|
||||
@@ -10757,7 +10769,7 @@ msgstr "测试 Webhook 已发送"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx
|
||||
msgid "test@example.com"
|
||||
msgstr ""
|
||||
msgstr "test@example.com"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx
|
||||
@@ -11345,7 +11357,7 @@ msgstr "该文档已由所有收件人签署"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "This document has too many recipients. Please remove some recipients or contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "此文档的收件人数量过多。请删除部分收件人,或在需要更多收件人时联系支持。"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-certificate-qr-view.tsx
|
||||
msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there."
|
||||
@@ -11406,7 +11418,7 @@ msgstr "如果仍有其他收件人尚未签署,将向刚完成签署的收件
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: packages/ui/primitives/document-flow/add-signers.tsx
|
||||
msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more."
|
||||
msgstr ""
|
||||
msgstr "此信封的收件人数量不能超过 {recipientCountLimit} 个。如需更多收件人,请联系支持。"
|
||||
|
||||
#: apps/remix/app/components/embed/embed-paywall.tsx
|
||||
msgid "This feature is not available on your current plan"
|
||||
@@ -11780,7 +11792,7 @@ msgstr "未找到令牌"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Too many recipients"
|
||||
msgstr ""
|
||||
msgstr "收件人数量过多"
|
||||
|
||||
#: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx
|
||||
@@ -11821,23 +11833,23 @@ msgstr "将文档转移到其他团队"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx
|
||||
msgid "Transport created."
|
||||
msgstr ""
|
||||
msgstr "传输已创建。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Transport deleted."
|
||||
msgstr ""
|
||||
msgstr "传输已删除。"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type"
|
||||
msgstr ""
|
||||
msgstr "传输类型"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Transport type cannot be changed after creation."
|
||||
msgstr ""
|
||||
msgstr "传输类型在创建后无法更改。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx
|
||||
msgid "Transport updated."
|
||||
msgstr ""
|
||||
msgstr "传输已更新。"
|
||||
|
||||
#: apps/remix/app/components/dialogs/webhook-create-dialog.tsx
|
||||
#: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx
|
||||
@@ -12377,7 +12389,7 @@ msgstr "使用您的通行密钥进行认证"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-email-transports-table.tsx
|
||||
msgid "Used by claims"
|
||||
msgstr ""
|
||||
msgstr "被声明使用"
|
||||
|
||||
#: apps/remix/app/components/tables/admin-document-logs-table.tsx
|
||||
#: apps/remix/app/components/tables/document-logs-table.tsx
|
||||
@@ -12429,7 +12441,7 @@ msgstr "用户设置"
|
||||
|
||||
#: apps/remix/app/components/forms/email-transport-form.tsx
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "用户名"
|
||||
|
||||
#: apps/remix/app/components/tables/organisation-insights-table.tsx
|
||||
#: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx
|
||||
@@ -12728,7 +12740,7 @@ msgstr "想拥有自己的公开资料吗?"
|
||||
|
||||
#: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx
|
||||
msgid "Warning, this email transport is currently being used by:"
|
||||
msgstr ""
|
||||
msgstr "警告,此电子邮件传输当前正被以下主体使用:"
|
||||
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx
|
||||
@@ -13713,7 +13725,7 @@ msgstr "您本月的文档数量已达到上限。请升级您的套餐。"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "You have reached your document limit for this plan. Please upgrade your plan."
|
||||
msgstr ""
|
||||
msgstr "您在当前方案中的文档数量已达上限。请升级您的方案。"
|
||||
|
||||
#: apps/remix/app/components/general/document/document-upload-button-legacy.tsx
|
||||
#: apps/remix/app/components/general/envelope/envelope-upload-button.tsx
|
||||
@@ -14265,15 +14277,15 @@ msgstr "您的组织已成功更新。"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit"
|
||||
msgstr ""
|
||||
msgstr "您的组织已超出合理使用限制"
|
||||
|
||||
#: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx
|
||||
msgid "Your organisation has exceeded a fair use limit. Please contact <0>support</0> to review your plan's limits."
|
||||
msgstr ""
|
||||
msgstr "您的组织已超出合理使用限制。请联系<0>支持</0>以查看您方案的限制。"
|
||||
|
||||
#: apps/remix/app/utils/toast-error-messages.ts
|
||||
msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue."
|
||||
msgstr ""
|
||||
msgstr "您的组织已达到当前方案的合理使用限制。要继续使用,请联系您组织的管理员或支持团队。"
|
||||
|
||||
#: packages/email/templates/organisation-limit-exceeded.tsx
|
||||
msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled."
|
||||
@@ -14410,3 +14422,4 @@ msgstr "您的验证码:"
|
||||
#: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx
|
||||
msgid "your-domain.com another-domain.com"
|
||||
msgstr "your-domain.com another-domain.com"
|
||||
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
import {
|
||||
ORGANISATION_MEMBER_ROLE_PERMISSIONS_MAP,
|
||||
ORGANISATION_USER_ACCOUNT_TYPE,
|
||||
} from '@documenso/lib/constants/organisations';
|
||||
import { ORGANISATION_MEMBER_ROLE_PERMISSIONS_MAP } from '@documenso/lib/constants/organisations';
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import { jobs } from '@documenso/lib/jobs/client';
|
||||
import { orphanEnvelopes } from '@documenso/lib/server-only/envelope/orphan-envelopes';
|
||||
import { deleteOrganisation } from '@documenso/lib/server-only/organisation/delete-organisation';
|
||||
import { buildOrganisationWhereQuery } from '@documenso/lib/utils/organisations';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
@@ -57,35 +53,5 @@ export const deleteOrganisationRoute = authenticatedProcedure
|
||||
});
|
||||
}
|
||||
|
||||
// Orphan all envelopes to get rid of foreign key constraints.
|
||||
await Promise.all(organisation.teams.map(async (team) => orphanEnvelopes({ teamId: team.id })));
|
||||
|
||||
await prisma.$transaction(async (tx) => {
|
||||
await tx.account.deleteMany({
|
||||
where: {
|
||||
type: ORGANISATION_USER_ACCOUNT_TYPE,
|
||||
provider: organisation.id,
|
||||
},
|
||||
});
|
||||
|
||||
await tx.organisation.delete({
|
||||
where: {
|
||||
id: organisation.id,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
// If the organisation has a Stripe subscription, schedule it to be
|
||||
// cancelled at the end of the current billing period. The job runs
|
||||
// asynchronously so a Stripe outage doesn't block deletion, and is
|
||||
// retried by the job runner if Stripe is temporarily unavailable.
|
||||
if (organisation.subscription) {
|
||||
await jobs.triggerJob({
|
||||
name: 'internal.cancel-organisation-subscription',
|
||||
payload: {
|
||||
stripeSubscriptionId: organisation.subscription.planId,
|
||||
organisationId: organisation.id,
|
||||
},
|
||||
});
|
||||
}
|
||||
await deleteOrganisation({ organisation });
|
||||
});
|
||||
|
||||
@@ -36,6 +36,12 @@ export const profileRouter = router({
|
||||
}),
|
||||
|
||||
deleteAccount: authenticatedProcedure.mutation(async ({ ctx }) => {
|
||||
ctx.logger.info({
|
||||
input: {
|
||||
userId: ctx.user.id,
|
||||
},
|
||||
});
|
||||
|
||||
await deleteUser({
|
||||
id: ctx.user.id,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user