mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 00:03:33 +10:00
fix: refactor dates (#1321)
## Description Refactor the current date formatting system to utilize Lingui. ## Changes Made - Remove redundant `LocaleData` component with Lingui dates ## Important notes For the internal pages for certificates, default to en-US to format any dates. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Enhanced internationalization support across various components by utilizing the `i18n` object for date formatting. - Streamlined locale management by removing cookie-based language handling and adopting a more centralized approach. - **Bug Fixes** - Improved date formatting consistency by replacing the `LocaleDate` component with direct calls to `i18n.date()` in multiple components. - **Documentation** - Updated localization strings in the `web.po` files to reflect recent changes in the source code structure. - **Chores** - Minor formatting adjustments and code organization improvements across various files to enhance readability and maintainability. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: github-actions <github-actions@documenso.com>
This commit is contained in:
@ -1,7 +1,6 @@
|
|||||||
import { Suspense } from 'react';
|
import { Suspense } from 'react';
|
||||||
|
|
||||||
import { Caveat, Inter } from 'next/font/google';
|
import { Caveat, Inter } from 'next/font/google';
|
||||||
import { cookies, headers } from 'next/headers';
|
|
||||||
|
|
||||||
import { AxiomWebVitals } from 'next-axiom';
|
import { AxiomWebVitals } from 'next-axiom';
|
||||||
import { PublicEnvScript } from 'next-runtime-env';
|
import { PublicEnvScript } from 'next-runtime-env';
|
||||||
@ -10,8 +9,6 @@ import { FeatureFlagProvider } from '@documenso/lib/client-only/providers/featur
|
|||||||
import { I18nClientProvider } from '@documenso/lib/client-only/providers/i18n.client';
|
import { I18nClientProvider } from '@documenso/lib/client-only/providers/i18n.client';
|
||||||
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
|
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
|
||||||
import { NEXT_PUBLIC_MARKETING_URL } from '@documenso/lib/constants/app';
|
import { NEXT_PUBLIC_MARKETING_URL } from '@documenso/lib/constants/app';
|
||||||
import type { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
|
|
||||||
import { ZSupportedLanguageCodeSchema } from '@documenso/lib/constants/i18n';
|
|
||||||
import { getAllAnonymousFlags } from '@documenso/lib/universal/get-feature-flag';
|
import { getAllAnonymousFlags } from '@documenso/lib/universal/get-feature-flag';
|
||||||
import { TrpcProvider } from '@documenso/trpc/react';
|
import { TrpcProvider } from '@documenso/trpc/react';
|
||||||
import { cn } from '@documenso/ui/lib/utils';
|
import { cn } from '@documenso/ui/lib/utils';
|
||||||
@ -59,25 +56,7 @@ export function generateMetadata() {
|
|||||||
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
||||||
const flags = await getAllAnonymousFlags();
|
const flags = await getAllAnonymousFlags();
|
||||||
|
|
||||||
let overrideLang: (typeof SUPPORTED_LANGUAGE_CODES)[number] | undefined;
|
const { lang, locales, i18n } = setupI18nSSR();
|
||||||
|
|
||||||
// Should be safe to remove when we upgrade NextJS.
|
|
||||||
// https://github.com/vercel/next.js/pull/65008
|
|
||||||
// Currently if the middleware sets the cookie, it's not accessible in the cookies
|
|
||||||
// during the same render.
|
|
||||||
// So we go the roundabout way of checking the header for the set-cookie value.
|
|
||||||
if (!cookies().get('i18n')) {
|
|
||||||
const setCookieValue = headers().get('set-cookie');
|
|
||||||
const i18nCookie = setCookieValue?.split(';').find((cookie) => cookie.startsWith('i18n='));
|
|
||||||
|
|
||||||
if (i18nCookie) {
|
|
||||||
const i18n = i18nCookie.split('=')[1];
|
|
||||||
|
|
||||||
overrideLang = ZSupportedLanguageCodeSchema.parse(i18n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const { lang, i18n } = setupI18nSSR(overrideLang);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<html
|
<html
|
||||||
@ -105,7 +84,10 @@ export default async function RootLayout({ children }: { children: React.ReactNo
|
|||||||
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
|
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
|
||||||
<PlausibleProvider>
|
<PlausibleProvider>
|
||||||
<TrpcProvider>
|
<TrpcProvider>
|
||||||
<I18nClientProvider initialLocale={lang} initialMessages={i18n.messages}>
|
<I18nClientProvider
|
||||||
|
initialLocaleData={{ lang, locales }}
|
||||||
|
initialMessages={i18n.messages}
|
||||||
|
>
|
||||||
{children}
|
{children}
|
||||||
</I18nClientProvider>
|
</I18nClientProvider>
|
||||||
</TrpcProvider>
|
</TrpcProvider>
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import { cookies } from 'next/headers';
|
|||||||
import type { NextRequest } from 'next/server';
|
import type { NextRequest } from 'next/server';
|
||||||
import { NextResponse } from 'next/server';
|
import { NextResponse } from 'next/server';
|
||||||
|
|
||||||
import { extractSupportedLanguage } from '@documenso/lib/utils/i18n';
|
import { extractLocaleData } from '@documenso/lib/utils/i18n';
|
||||||
|
|
||||||
export default function middleware(req: NextRequest) {
|
export default function middleware(req: NextRequest) {
|
||||||
const lang = extractSupportedLanguage({
|
const { lang } = extractLocaleData({
|
||||||
headers: req.headers,
|
headers: req.headers,
|
||||||
cookies: cookies(),
|
cookies: cookies(),
|
||||||
});
|
});
|
||||||
|
|||||||
@ -12,7 +12,6 @@ import {
|
|||||||
import { Badge } from '@documenso/ui/primitives/badge';
|
import { Badge } from '@documenso/ui/primitives/badge';
|
||||||
|
|
||||||
import { DocumentStatus } from '~/components/formatter/document-status';
|
import { DocumentStatus } from '~/components/formatter/document-status';
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
import { AdminActions } from './admin-actions';
|
import { AdminActions } from './admin-actions';
|
||||||
import { RecipientItem } from './recipient-item';
|
import { RecipientItem } from './recipient-item';
|
||||||
@ -25,7 +24,7 @@ type AdminDocumentDetailsPageProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default async function AdminDocumentDetailsPage({ params }: AdminDocumentDetailsPageProps) {
|
export default async function AdminDocumentDetailsPage({ params }: AdminDocumentDetailsPageProps) {
|
||||||
setupI18nSSR();
|
const { i18n } = setupI18nSSR();
|
||||||
|
|
||||||
const document = await getEntireDocument({ id: Number(params.id) });
|
const document = await getEntireDocument({ id: Number(params.id) });
|
||||||
|
|
||||||
@ -46,12 +45,11 @@ export default async function AdminDocumentDetailsPage({ params }: AdminDocument
|
|||||||
|
|
||||||
<div className="text-muted-foreground mt-4 text-sm">
|
<div className="text-muted-foreground mt-4 text-sm">
|
||||||
<div>
|
<div>
|
||||||
<Trans>Created on</Trans>:{' '}
|
<Trans>Created on</Trans>: {i18n.date(document.createdAt, DateTime.DATETIME_MED)}
|
||||||
<LocaleDate date={document.createdAt} format={DateTime.DATETIME_MED} />
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<Trans>Last updated at</Trans>:{' '}
|
<Trans>Last updated at</Trans>: {i18n.date(document.updatedAt, DateTime.DATETIME_MED)}
|
||||||
<LocaleDate date={document.updatedAt} format={DateTime.DATETIME_MED} />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -21,12 +21,11 @@ import { Input } from '@documenso/ui/primitives/input';
|
|||||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip';
|
import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip';
|
||||||
|
|
||||||
import { DocumentStatus } from '~/components/formatter/document-status';
|
import { DocumentStatus } from '~/components/formatter/document-status';
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
// export type AdminDocumentResultsProps = {};
|
// export type AdminDocumentResultsProps = {};
|
||||||
|
|
||||||
export const AdminDocumentResults = () => {
|
export const AdminDocumentResults = () => {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
|
||||||
@ -62,7 +61,7 @@ export const AdminDocumentResults = () => {
|
|||||||
{
|
{
|
||||||
header: _(msg`Created`),
|
header: _(msg`Created`),
|
||||||
accessorKey: 'createdAt',
|
accessorKey: 'createdAt',
|
||||||
cell: ({ row }) => <LocaleDate date={row.original.createdAt} />,
|
cell: ({ row }) => i18n.date(row.original.createdAt),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: _(msg`Title`),
|
header: _(msg`Title`),
|
||||||
@ -122,7 +121,7 @@ export const AdminDocumentResults = () => {
|
|||||||
{
|
{
|
||||||
header: 'Last updated',
|
header: 'Last updated',
|
||||||
accessorKey: 'updatedAt',
|
accessorKey: 'updatedAt',
|
||||||
cell: ({ row }) => <LocaleDate date={row.original.updatedAt} />,
|
cell: ({ row }) => i18n.date(row.original.updatedAt),
|
||||||
},
|
},
|
||||||
] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
|
] satisfies DataTableColumnDef<(typeof results)['data'][number]>[];
|
||||||
}, []);
|
}, []);
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import { useLingui } from '@lingui/react';
|
|||||||
import { DateTime } from 'luxon';
|
import { DateTime } from 'luxon';
|
||||||
|
|
||||||
import { useIsMounted } from '@documenso/lib/client-only/hooks/use-is-mounted';
|
import { useIsMounted } from '@documenso/lib/client-only/hooks/use-is-mounted';
|
||||||
import { useLocale } from '@documenso/lib/client-only/providers/locale';
|
|
||||||
import type { Document, Recipient, User } from '@documenso/prisma/client';
|
import type { Document, Recipient, User } from '@documenso/prisma/client';
|
||||||
|
|
||||||
export type DocumentPageViewInformationProps = {
|
export type DocumentPageViewInformationProps = {
|
||||||
@ -24,21 +23,9 @@ export const DocumentPageViewInformation = ({
|
|||||||
}: DocumentPageViewInformationProps) => {
|
}: DocumentPageViewInformationProps) => {
|
||||||
const isMounted = useIsMounted();
|
const isMounted = useIsMounted();
|
||||||
|
|
||||||
const { locale } = useLocale();
|
const { _, i18n } = useLingui();
|
||||||
const { _ } = useLingui();
|
|
||||||
|
|
||||||
const documentInformation = useMemo(() => {
|
const documentInformation = useMemo(() => {
|
||||||
let createdValue = DateTime.fromJSDate(document.createdAt).toFormat('MMMM d, yyyy');
|
|
||||||
let lastModifiedValue = DateTime.fromJSDate(document.updatedAt).toRelative();
|
|
||||||
|
|
||||||
if (!isMounted) {
|
|
||||||
createdValue = DateTime.fromJSDate(document.createdAt)
|
|
||||||
.setLocale(locale)
|
|
||||||
.toFormat('MMMM d, yyyy');
|
|
||||||
|
|
||||||
lastModifiedValue = DateTime.fromJSDate(document.updatedAt).setLocale(locale).toRelative();
|
|
||||||
}
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
description: msg`Uploaded by`,
|
description: msg`Uploaded by`,
|
||||||
@ -46,15 +33,19 @@ export const DocumentPageViewInformation = ({
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: msg`Created`,
|
description: msg`Created`,
|
||||||
value: createdValue,
|
value: DateTime.fromJSDate(document.createdAt)
|
||||||
|
.setLocale(i18n.locales?.[0] || i18n.locale)
|
||||||
|
.toFormat('MMMM d, yyyy'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: msg`Last modified`,
|
description: msg`Last modified`,
|
||||||
value: lastModifiedValue,
|
value: DateTime.fromJSDate(document.updatedAt)
|
||||||
|
.setLocale(i18n.locales?.[0] || i18n.locale)
|
||||||
|
.toRelative(),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, [isMounted, document, locale, userId]);
|
}, [isMounted, document, userId]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="dark:bg-background text-foreground border-border bg-widget flex flex-col rounded-xl border">
|
<section className="dark:bg-background text-foreground border-border bg-widget flex flex-col rounded-xl border">
|
||||||
|
|||||||
@ -20,8 +20,6 @@ import { DataTablePagination } from '@documenso/ui/primitives/data-table-paginat
|
|||||||
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
||||||
import { TableCell } from '@documenso/ui/primitives/table';
|
import { TableCell } from '@documenso/ui/primitives/table';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
export type DocumentLogsDataTableProps = {
|
export type DocumentLogsDataTableProps = {
|
||||||
documentId: number;
|
documentId: number;
|
||||||
};
|
};
|
||||||
@ -32,7 +30,7 @@ const dateFormat: DateTimeFormatOptions = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const DocumentLogsDataTable = ({ documentId }: DocumentLogsDataTableProps) => {
|
export const DocumentLogsDataTable = ({ documentId }: DocumentLogsDataTableProps) => {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const updateSearchParams = useUpdateSearchParams();
|
const updateSearchParams = useUpdateSearchParams();
|
||||||
@ -78,7 +76,7 @@ export const DocumentLogsDataTable = ({ documentId }: DocumentLogsDataTableProps
|
|||||||
{
|
{
|
||||||
header: _(msg`Time`),
|
header: _(msg`Time`),
|
||||||
accessorKey: 'createdAt',
|
accessorKey: 'createdAt',
|
||||||
cell: ({ row }) => <LocaleDate format={dateFormat} date={row.original.createdAt} />,
|
cell: ({ row }) => i18n.date(row.original.createdAt, dateFormat),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: _(msg`User`),
|
header: _(msg`User`),
|
||||||
@ -106,9 +104,7 @@ export const DocumentLogsDataTable = ({ documentId }: DocumentLogsDataTableProps
|
|||||||
header: _(msg`Action`),
|
header: _(msg`Action`),
|
||||||
accessorKey: 'type',
|
accessorKey: 'type',
|
||||||
cell: ({ row }) => (
|
cell: ({ row }) => (
|
||||||
<span>
|
<span>{uppercaseFistLetter(formatDocumentAuditLogAction(row.original).description)}</span>
|
||||||
{uppercaseFistLetter(formatDocumentAuditLogAction(row.original).description)}
|
|
||||||
</span>
|
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -9,7 +9,6 @@ import { DateTime } from 'luxon';
|
|||||||
|
|
||||||
import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session';
|
import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session';
|
||||||
import { getDocumentById } from '@documenso/lib/server-only/document/get-document-by-id';
|
import { getDocumentById } from '@documenso/lib/server-only/document/get-document-by-id';
|
||||||
import { getLocale } from '@documenso/lib/server-only/headers/get-locale';
|
|
||||||
import { getRecipientsForDocument } from '@documenso/lib/server-only/recipient/get-recipients-for-document';
|
import { getRecipientsForDocument } from '@documenso/lib/server-only/recipient/get-recipients-for-document';
|
||||||
import { formatDocumentsPath } from '@documenso/lib/utils/teams';
|
import { formatDocumentsPath } from '@documenso/lib/utils/teams';
|
||||||
import type { Recipient, Team } from '@documenso/prisma/client';
|
import type { Recipient, Team } from '@documenso/prisma/client';
|
||||||
@ -32,9 +31,7 @@ export type DocumentLogsPageViewProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const DocumentLogsPageView = async ({ params, team }: DocumentLogsPageViewProps) => {
|
export const DocumentLogsPageView = async ({ params, team }: DocumentLogsPageViewProps) => {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const locale = getLocale();
|
|
||||||
|
|
||||||
const { id } = params;
|
const { id } = params;
|
||||||
|
|
||||||
@ -87,13 +84,13 @@ export const DocumentLogsPageView = async ({ params, team }: DocumentLogsPageVie
|
|||||||
{
|
{
|
||||||
description: msg`Date created`,
|
description: msg`Date created`,
|
||||||
value: DateTime.fromJSDate(document.createdAt)
|
value: DateTime.fromJSDate(document.createdAt)
|
||||||
.setLocale(locale)
|
.setLocale(i18n.locales?.[0] || i18n.locale)
|
||||||
.toLocaleString(DateTime.DATETIME_MED_WITH_SECONDS),
|
.toLocaleString(DateTime.DATETIME_MED_WITH_SECONDS),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: msg`Last updated`,
|
description: msg`Last updated`,
|
||||||
value: DateTime.fromJSDate(document.updatedAt)
|
value: DateTime.fromJSDate(document.updatedAt)
|
||||||
.setLocale(locale)
|
.setLocale(i18n.locales?.[0] || i18n.locale)
|
||||||
.toLocaleString(DateTime.DATETIME_MED_WITH_SECONDS),
|
.toLocaleString(DateTime.DATETIME_MED_WITH_SECONDS),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -18,7 +18,6 @@ import { DataTablePagination } from '@documenso/ui/primitives/data-table-paginat
|
|||||||
|
|
||||||
import { StackAvatarsWithTooltip } from '~/components/(dashboard)/avatar/stack-avatars-with-tooltip';
|
import { StackAvatarsWithTooltip } from '~/components/(dashboard)/avatar/stack-avatars-with-tooltip';
|
||||||
import { DocumentStatus } from '~/components/formatter/document-status';
|
import { DocumentStatus } from '~/components/formatter/document-status';
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
import { DataTableActionButton } from './data-table-action-button';
|
import { DataTableActionButton } from './data-table-action-button';
|
||||||
import { DataTableActionDropdown } from './data-table-action-dropdown';
|
import { DataTableActionDropdown } from './data-table-action-dropdown';
|
||||||
@ -41,8 +40,9 @@ export const DocumentsDataTable = ({
|
|||||||
showSenderColumn,
|
showSenderColumn,
|
||||||
team,
|
team,
|
||||||
}: DocumentsDataTableProps) => {
|
}: DocumentsDataTableProps) => {
|
||||||
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const { data: session } = useSession();
|
const { data: session } = useSession();
|
||||||
const { _ } = useLingui();
|
|
||||||
|
|
||||||
const [isPending, startTransition] = useTransition();
|
const [isPending, startTransition] = useTransition();
|
||||||
|
|
||||||
@ -53,12 +53,8 @@ export const DocumentsDataTable = ({
|
|||||||
{
|
{
|
||||||
header: _(msg`Created`),
|
header: _(msg`Created`),
|
||||||
accessorKey: 'createdAt',
|
accessorKey: 'createdAt',
|
||||||
cell: ({ row }) => (
|
cell: ({ row }) =>
|
||||||
<LocaleDate
|
i18n.date(row.original.createdAt, { ...DateTime.DATETIME_SHORT, hourCycle: 'h12' }),
|
||||||
date={row.original.createdAt}
|
|
||||||
format={{ ...DateTime.DATETIME_SHORT, hourCycle: 'h12' }}
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: _(msg`Title`),
|
header: _(msg`Title`),
|
||||||
@ -88,8 +84,7 @@ export const DocumentsDataTable = ({
|
|||||||
{
|
{
|
||||||
header: _(msg`Actions`),
|
header: _(msg`Actions`),
|
||||||
cell: ({ row }) =>
|
cell: ({ row }) =>
|
||||||
(!row.original.deletedAt ||
|
(!row.original.deletedAt || row.original.status === ExtendedDocumentStatus.COMPLETED) && (
|
||||||
row.original.status === ExtendedDocumentStatus.COMPLETED) && (
|
|
||||||
<div className="flex items-center gap-x-4">
|
<div className="flex items-center gap-x-4">
|
||||||
<DataTableActionButton team={team} row={row.original} />
|
<DataTableActionButton team={team} row={row.original} />
|
||||||
<DataTableActionDropdown team={team} row={row.original} />
|
<DataTableActionDropdown team={team} row={row.original} />
|
||||||
|
|||||||
@ -16,8 +16,6 @@ import { type Stripe } from '@documenso/lib/server-only/stripe';
|
|||||||
import { getSubscriptionsByUserId } from '@documenso/lib/server-only/subscription/get-subscriptions-by-user-id';
|
import { getSubscriptionsByUserId } from '@documenso/lib/server-only/subscription/get-subscriptions-by-user-id';
|
||||||
import { SubscriptionStatus } from '@documenso/prisma/client';
|
import { SubscriptionStatus } from '@documenso/prisma/client';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
import { BillingPlans } from './billing-plans';
|
import { BillingPlans } from './billing-plans';
|
||||||
import { BillingPortalButton } from './billing-portal-button';
|
import { BillingPortalButton } from './billing-portal-button';
|
||||||
|
|
||||||
@ -26,7 +24,7 @@ export const metadata: Metadata = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default async function BillingSettingsPage() {
|
export default async function BillingSettingsPage() {
|
||||||
setupI18nSSR();
|
const { i18n } = setupI18nSSR();
|
||||||
|
|
||||||
let { user } = await getRequiredServerComponentSession();
|
let { user } = await getRequiredServerComponentSession();
|
||||||
|
|
||||||
@ -104,12 +102,12 @@ export default async function BillingSettingsPage() {
|
|||||||
{subscription.cancelAtPeriodEnd ? (
|
{subscription.cancelAtPeriodEnd ? (
|
||||||
<span>
|
<span>
|
||||||
end on{' '}
|
end on{' '}
|
||||||
<LocaleDate className="font-semibold" date={subscription.periodEnd} />.
|
<span className="font-semibold">{i18n.date(subscription.periodEnd)}.</span>
|
||||||
</span>
|
</span>
|
||||||
) : (
|
) : (
|
||||||
<span>
|
<span>
|
||||||
automatically renew on{' '}
|
automatically renew on{' '}
|
||||||
<LocaleDate className="font-semibold" date={subscription.periodEnd} />.
|
<span className="font-semibold">{i18n.date(subscription.periodEnd)}.</span>
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@ -20,15 +20,13 @@ import { DataTablePagination } from '@documenso/ui/primitives/data-table-paginat
|
|||||||
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
||||||
import { TableCell } from '@documenso/ui/primitives/table';
|
import { TableCell } from '@documenso/ui/primitives/table';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
const dateFormat: DateTimeFormatOptions = {
|
const dateFormat: DateTimeFormatOptions = {
|
||||||
...DateTime.DATETIME_SHORT,
|
...DateTime.DATETIME_SHORT,
|
||||||
hourCycle: 'h12',
|
hourCycle: 'h12',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const UserSecurityActivityDataTable = () => {
|
export const UserSecurityActivityDataTable = () => {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@ -71,7 +69,7 @@ export const UserSecurityActivityDataTable = () => {
|
|||||||
{
|
{
|
||||||
header: _(msg`Date`),
|
header: _(msg`Date`),
|
||||||
accessorKey: 'createdAt',
|
accessorKey: 'createdAt',
|
||||||
cell: ({ row }) => <LocaleDate format={dateFormat} date={row.original.createdAt} />,
|
cell: ({ row }) => i18n.date(row.original.createdAt, dateFormat),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: _(msg`Device`),
|
header: _(msg`Device`),
|
||||||
|
|||||||
@ -7,11 +7,10 @@ import { getUserTokens } from '@documenso/lib/server-only/public-api/get-all-use
|
|||||||
import { Button } from '@documenso/ui/primitives/button';
|
import { Button } from '@documenso/ui/primitives/button';
|
||||||
|
|
||||||
import DeleteTokenDialog from '~/components/(dashboard)/settings/token/delete-token-dialog';
|
import DeleteTokenDialog from '~/components/(dashboard)/settings/token/delete-token-dialog';
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
import { ApiTokenForm } from '~/components/forms/token';
|
import { ApiTokenForm } from '~/components/forms/token';
|
||||||
|
|
||||||
export default async function ApiTokensPage() {
|
export default async function ApiTokensPage() {
|
||||||
setupI18nSSR();
|
const { i18n } = setupI18nSSR();
|
||||||
|
|
||||||
const { user } = await getRequiredServerComponentSession();
|
const { user } = await getRequiredServerComponentSession();
|
||||||
|
|
||||||
@ -65,13 +64,11 @@ export default async function ApiTokensPage() {
|
|||||||
<h5 className="text-base">{token.name}</h5>
|
<h5 className="text-base">{token.name}</h5>
|
||||||
|
|
||||||
<p className="text-muted-foreground mt-2 text-xs">
|
<p className="text-muted-foreground mt-2 text-xs">
|
||||||
<Trans>Created on</Trans>{' '}
|
<Trans>Created on {i18n.date(token.createdAt, DateTime.DATETIME_FULL)}</Trans>
|
||||||
<LocaleDate date={token.createdAt} format={DateTime.DATETIME_FULL} />
|
|
||||||
</p>
|
</p>
|
||||||
{token.expires ? (
|
{token.expires ? (
|
||||||
<p className="text-muted-foreground mt-1 text-xs">
|
<p className="text-muted-foreground mt-1 text-xs">
|
||||||
<Trans>Expires on</Trans>{' '}
|
<Trans>Expires on {i18n.date(token.expires, DateTime.DATETIME_FULL)}</Trans>
|
||||||
<LocaleDate date={token.expires} format={DateTime.DATETIME_FULL} />
|
|
||||||
</p>
|
</p>
|
||||||
) : (
|
) : (
|
||||||
<p className="text-muted-foreground mt-1 text-xs">
|
<p className="text-muted-foreground mt-1 text-xs">
|
||||||
|
|||||||
@ -16,10 +16,9 @@ import { Button } from '@documenso/ui/primitives/button';
|
|||||||
import { SettingsHeader } from '~/components/(dashboard)/settings/layout/header';
|
import { SettingsHeader } from '~/components/(dashboard)/settings/layout/header';
|
||||||
import { CreateWebhookDialog } from '~/components/(dashboard)/settings/webhooks/create-webhook-dialog';
|
import { CreateWebhookDialog } from '~/components/(dashboard)/settings/webhooks/create-webhook-dialog';
|
||||||
import { DeleteWebhookDialog } from '~/components/(dashboard)/settings/webhooks/delete-webhook-dialog';
|
import { DeleteWebhookDialog } from '~/components/(dashboard)/settings/webhooks/delete-webhook-dialog';
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
export default function WebhookPage() {
|
export default function WebhookPage() {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const { data: webhooks, isLoading } = trpc.webhook.getWebhooks.useQuery();
|
const { data: webhooks, isLoading } = trpc.webhook.getWebhooks.useQuery();
|
||||||
|
|
||||||
@ -86,10 +85,7 @@ export default function WebhookPage() {
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p className="text-muted-foreground mt-2 text-xs">
|
<p className="text-muted-foreground mt-2 text-xs">
|
||||||
<Trans>
|
<Trans>Created on {i18n.date(webhook.createdAt, DateTime.DATETIME_FULL)}</Trans>
|
||||||
Created on{' '}
|
|
||||||
<LocaleDate date={webhook.createdAt} format={DateTime.DATETIME_FULL} />
|
|
||||||
</Trans>
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,6 @@ import { DataTable } from '@documenso/ui/primitives/data-table';
|
|||||||
import { DataTablePagination } from '@documenso/ui/primitives/data-table-pagination';
|
import { DataTablePagination } from '@documenso/ui/primitives/data-table-pagination';
|
||||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip';
|
import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
import { TemplateType } from '~/components/formatter/template-type';
|
import { TemplateType } from '~/components/formatter/template-type';
|
||||||
|
|
||||||
import { DataTableActionDropdown } from './data-table-action-dropdown';
|
import { DataTableActionDropdown } from './data-table-action-dropdown';
|
||||||
@ -48,7 +47,7 @@ export const TemplatesDataTable = ({
|
|||||||
|
|
||||||
const updateSearchParams = useUpdateSearchParams();
|
const updateSearchParams = useUpdateSearchParams();
|
||||||
|
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
const { remaining } = useLimits();
|
const { remaining } = useLimits();
|
||||||
|
|
||||||
const columns = useMemo(() => {
|
const columns = useMemo(() => {
|
||||||
@ -56,7 +55,7 @@ export const TemplatesDataTable = ({
|
|||||||
{
|
{
|
||||||
header: _(msg`Created`),
|
header: _(msg`Created`),
|
||||||
accessorKey: 'createdAt',
|
accessorKey: 'createdAt',
|
||||||
cell: ({ row }) => <LocaleDate date={row.original.createdAt} />,
|
cell: ({ row }) => i18n.date(row.original.createdAt),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: _(msg`Title`),
|
header: _(msg`Title`),
|
||||||
@ -81,8 +80,8 @@ export const TemplatesDataTable = ({
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
<Trans>
|
<Trans>
|
||||||
Public templates are connected to your public profile. Any modifications
|
Public templates are connected to your public profile. Any modifications to
|
||||||
to public templates will also appear in your public profile.
|
public templates will also appear in your public profile.
|
||||||
</Trans>
|
</Trans>
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
@ -94,9 +93,9 @@ export const TemplatesDataTable = ({
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
<Trans>
|
<Trans>
|
||||||
Direct link templates contain one dynamic recipient placeholder. Anyone
|
Direct link templates contain one dynamic recipient placeholder. Anyone with
|
||||||
with access to this link can sign the document, and it will then appear
|
access to this link can sign the document, and it will then appear on your
|
||||||
on your documents page.
|
documents page.
|
||||||
</Trans>
|
</Trans>
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
@ -109,8 +108,8 @@ export const TemplatesDataTable = ({
|
|||||||
<p>
|
<p>
|
||||||
{teamId ? (
|
{teamId ? (
|
||||||
<Trans>
|
<Trans>
|
||||||
Team only templates are not linked anywhere and are visible only to
|
Team only templates are not linked anywhere and are visible only to your
|
||||||
your team.
|
team.
|
||||||
</Trans>
|
</Trans>
|
||||||
) : (
|
) : (
|
||||||
<Trans>Private templates can only be modified and viewed by you.</Trans>
|
<Trans>Private templates can only be modified and viewed by you.</Trans>
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import { DateTime } from 'luxon';
|
|||||||
import type { DateTimeFormatOptions } from 'luxon';
|
import type { DateTimeFormatOptions } from 'luxon';
|
||||||
import { UAParser } from 'ua-parser-js';
|
import { UAParser } from 'ua-parser-js';
|
||||||
|
|
||||||
|
import { APP_I18N_OPTIONS } from '@documenso/lib/constants/i18n';
|
||||||
import type { TDocumentAuditLog } from '@documenso/lib/types/document-audit-logs';
|
import type { TDocumentAuditLog } from '@documenso/lib/types/document-audit-logs';
|
||||||
import { formatDocumentAuditLogAction } from '@documenso/lib/utils/document-audit-logs';
|
import { formatDocumentAuditLogAction } from '@documenso/lib/utils/document-audit-logs';
|
||||||
import {
|
import {
|
||||||
@ -15,8 +16,6 @@ import {
|
|||||||
TableRow,
|
TableRow,
|
||||||
} from '@documenso/ui/primitives/table';
|
} from '@documenso/ui/primitives/table';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
export type AuditLogDataTableProps = {
|
export type AuditLogDataTableProps = {
|
||||||
logs: TDocumentAuditLog[];
|
logs: TDocumentAuditLog[];
|
||||||
};
|
};
|
||||||
@ -49,7 +48,9 @@ export const AuditLogDataTable = ({ logs }: AuditLogDataTableProps) => {
|
|||||||
{logs.map((log, i) => (
|
{logs.map((log, i) => (
|
||||||
<TableRow className="break-inside-avoid" key={i}>
|
<TableRow className="break-inside-avoid" key={i}>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<LocaleDate format={dateFormat} date={log.createdAt} />
|
{DateTime.fromJSDate(log.createdAt)
|
||||||
|
.setLocale(APP_I18N_OPTIONS.defaultLocale)
|
||||||
|
.toLocaleString(dateFormat)}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
|
||||||
<TableCell>
|
<TableCell>
|
||||||
|
|||||||
@ -2,7 +2,9 @@ import React from 'react';
|
|||||||
|
|
||||||
import { redirect } from 'next/navigation';
|
import { redirect } from 'next/navigation';
|
||||||
|
|
||||||
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
|
import { DateTime } from 'luxon';
|
||||||
|
|
||||||
|
import { APP_I18N_OPTIONS } from '@documenso/lib/constants/i18n';
|
||||||
import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '@documenso/lib/constants/recipient-roles';
|
import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '@documenso/lib/constants/recipient-roles';
|
||||||
import { getEntireDocument } from '@documenso/lib/server-only/admin/get-entire-document';
|
import { getEntireDocument } from '@documenso/lib/server-only/admin/get-entire-document';
|
||||||
import { decryptSecondaryData } from '@documenso/lib/server-only/crypto/decrypt';
|
import { decryptSecondaryData } from '@documenso/lib/server-only/crypto/decrypt';
|
||||||
@ -10,7 +12,6 @@ import { findDocumentAuditLogs } from '@documenso/lib/server-only/document/find-
|
|||||||
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
||||||
|
|
||||||
import { Logo } from '~/components/branding/logo';
|
import { Logo } from '~/components/branding/logo';
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
import { AuditLogDataTable } from './data-table';
|
import { AuditLogDataTable } from './data-table';
|
||||||
|
|
||||||
@ -21,8 +22,6 @@ type AuditLogProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default async function AuditLog({ searchParams }: AuditLogProps) {
|
export default async function AuditLog({ searchParams }: AuditLogProps) {
|
||||||
setupI18nSSR();
|
|
||||||
|
|
||||||
const { d } = searchParams;
|
const { d } = searchParams;
|
||||||
|
|
||||||
if (typeof d !== 'string' || !d) {
|
if (typeof d !== 'string' || !d) {
|
||||||
@ -89,7 +88,9 @@ export default async function AuditLog({ searchParams }: AuditLogProps) {
|
|||||||
<span className="font-medium">Created At</span>
|
<span className="font-medium">Created At</span>
|
||||||
|
|
||||||
<span className="mt-1 block">
|
<span className="mt-1 block">
|
||||||
<LocaleDate date={document.createdAt} format="yyyy-mm-dd hh:mm:ss a (ZZZZ)" />
|
{DateTime.fromJSDate(document.createdAt)
|
||||||
|
.setLocale(APP_I18N_OPTIONS.defaultLocale)
|
||||||
|
.toFormat('yyyy-mm-dd hh:mm:ss a (ZZZZ)')}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -97,7 +98,9 @@ export default async function AuditLog({ searchParams }: AuditLogProps) {
|
|||||||
<span className="font-medium">Last Updated</span>
|
<span className="font-medium">Last Updated</span>
|
||||||
|
|
||||||
<span className="mt-1 block">
|
<span className="mt-1 block">
|
||||||
<LocaleDate date={document.updatedAt} format="yyyy-mm-dd hh:mm:ss a (ZZZZ)" />
|
{DateTime.fromJSDate(document.updatedAt)
|
||||||
|
.setLocale(APP_I18N_OPTIONS.defaultLocale)
|
||||||
|
.toFormat('yyyy-mm-dd hh:mm:ss a (ZZZZ)')}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@ -2,10 +2,11 @@ import React from 'react';
|
|||||||
|
|
||||||
import { redirect } from 'next/navigation';
|
import { redirect } from 'next/navigation';
|
||||||
|
|
||||||
|
import { DateTime } from 'luxon';
|
||||||
import { match } from 'ts-pattern';
|
import { match } from 'ts-pattern';
|
||||||
import { UAParser } from 'ua-parser-js';
|
import { UAParser } from 'ua-parser-js';
|
||||||
|
|
||||||
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
|
import { APP_I18N_OPTIONS } from '@documenso/lib/constants/i18n';
|
||||||
import {
|
import {
|
||||||
RECIPIENT_ROLES_DESCRIPTION_ENG,
|
RECIPIENT_ROLES_DESCRIPTION_ENG,
|
||||||
RECIPIENT_ROLE_SIGNING_REASONS_ENG,
|
RECIPIENT_ROLE_SIGNING_REASONS_ENG,
|
||||||
@ -27,7 +28,6 @@ import {
|
|||||||
} from '@documenso/ui/primitives/table';
|
} from '@documenso/ui/primitives/table';
|
||||||
|
|
||||||
import { Logo } from '~/components/branding/logo';
|
import { Logo } from '~/components/branding/logo';
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
type SigningCertificateProps = {
|
type SigningCertificateProps = {
|
||||||
searchParams: {
|
searchParams: {
|
||||||
@ -41,8 +41,6 @@ const FRIENDLY_SIGNING_REASONS = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default async function SigningCertificate({ searchParams }: SigningCertificateProps) {
|
export default async function SigningCertificate({ searchParams }: SigningCertificateProps) {
|
||||||
setupI18nSSR();
|
|
||||||
|
|
||||||
const { d } = searchParams;
|
const { d } = searchParams;
|
||||||
|
|
||||||
if (typeof d !== 'string' || !d) {
|
if (typeof d !== 'string' || !d) {
|
||||||
@ -231,42 +229,33 @@ export default async function SigningCertificate({ searchParams }: SigningCertif
|
|||||||
<p className="text-muted-foreground text-sm print:text-xs">
|
<p className="text-muted-foreground text-sm print:text-xs">
|
||||||
<span className="font-medium">Sent:</span>{' '}
|
<span className="font-medium">Sent:</span>{' '}
|
||||||
<span className="inline-block">
|
<span className="inline-block">
|
||||||
{logs.EMAIL_SENT[0] ? (
|
{logs.EMAIL_SENT[0]
|
||||||
<LocaleDate
|
? DateTime.fromJSDate(logs.EMAIL_SENT[0].createdAt)
|
||||||
date={logs.EMAIL_SENT[0].createdAt}
|
.setLocale(APP_I18N_OPTIONS.defaultLocale)
|
||||||
format="yyyy-MM-dd hh:mm:ss a (ZZZZ)"
|
.toFormat('yyyy-MM-dd hh:mm:ss a (ZZZZ)')
|
||||||
/>
|
: 'Unknown'}
|
||||||
) : (
|
|
||||||
'Unknown'
|
|
||||||
)}
|
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p className="text-muted-foreground text-sm print:text-xs">
|
<p className="text-muted-foreground text-sm print:text-xs">
|
||||||
<span className="font-medium">Viewed:</span>{' '}
|
<span className="font-medium">Viewed:</span>{' '}
|
||||||
<span className="inline-block">
|
<span className="inline-block">
|
||||||
{logs.DOCUMENT_OPENED[0] ? (
|
{logs.DOCUMENT_OPENED[0]
|
||||||
<LocaleDate
|
? DateTime.fromJSDate(logs.DOCUMENT_OPENED[0].createdAt)
|
||||||
date={logs.DOCUMENT_OPENED[0].createdAt}
|
.setLocale(APP_I18N_OPTIONS.defaultLocale)
|
||||||
format="yyyy-MM-dd hh:mm:ss a (ZZZZ)"
|
.toFormat('yyyy-MM-dd hh:mm:ss a (ZZZZ)')
|
||||||
/>
|
: 'Unknown'}
|
||||||
) : (
|
|
||||||
'Unknown'
|
|
||||||
)}
|
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p className="text-muted-foreground text-sm print:text-xs">
|
<p className="text-muted-foreground text-sm print:text-xs">
|
||||||
<span className="font-medium">Signed:</span>{' '}
|
<span className="font-medium">Signed:</span>{' '}
|
||||||
<span className="inline-block">
|
<span className="inline-block">
|
||||||
{logs.DOCUMENT_RECIPIENT_COMPLETED[0] ? (
|
{logs.DOCUMENT_RECIPIENT_COMPLETED[0]
|
||||||
<LocaleDate
|
? DateTime.fromJSDate(logs.DOCUMENT_RECIPIENT_COMPLETED[0].createdAt)
|
||||||
date={logs.DOCUMENT_RECIPIENT_COMPLETED[0].createdAt}
|
.setLocale(APP_I18N_OPTIONS.defaultLocale)
|
||||||
format="yyyy-MM-dd hh:mm:ss a (ZZZZ)"
|
.toFormat('yyyy-MM-dd hh:mm:ss a (ZZZZ)')
|
||||||
/>
|
: 'Unknown'}
|
||||||
) : (
|
|
||||||
'Unknown'
|
|
||||||
)}
|
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,6 @@ import { getTeamByUrl } from '@documenso/lib/server-only/team/get-team';
|
|||||||
import { Button } from '@documenso/ui/primitives/button';
|
import { Button } from '@documenso/ui/primitives/button';
|
||||||
|
|
||||||
import DeleteTokenDialog from '~/components/(dashboard)/settings/token/delete-token-dialog';
|
import DeleteTokenDialog from '~/components/(dashboard)/settings/token/delete-token-dialog';
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
import { ApiTokenForm } from '~/components/forms/token';
|
import { ApiTokenForm } from '~/components/forms/token';
|
||||||
|
|
||||||
type ApiTokensPageProps = {
|
type ApiTokensPageProps = {
|
||||||
@ -22,7 +21,7 @@ type ApiTokensPageProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default async function ApiTokensPage({ params }: ApiTokensPageProps) {
|
export default async function ApiTokensPage({ params }: ApiTokensPageProps) {
|
||||||
setupI18nSSR();
|
const { i18n } = setupI18nSSR();
|
||||||
|
|
||||||
const { teamUrl } = params;
|
const { teamUrl } = params;
|
||||||
|
|
||||||
@ -98,13 +97,17 @@ export default async function ApiTokensPage({ params }: ApiTokensPageProps) {
|
|||||||
<h5 className="text-base">{token.name}</h5>
|
<h5 className="text-base">{token.name}</h5>
|
||||||
|
|
||||||
<p className="text-muted-foreground mt-2 text-xs">
|
<p className="text-muted-foreground mt-2 text-xs">
|
||||||
<Trans>Created on</Trans>{' '}
|
<Trans>
|
||||||
<LocaleDate date={token.createdAt} format={DateTime.DATETIME_FULL} />
|
Created on
|
||||||
|
{i18n.date(token.createdAt, DateTime.DATETIME_FULL)}
|
||||||
|
</Trans>
|
||||||
</p>
|
</p>
|
||||||
{token.expires ? (
|
{token.expires ? (
|
||||||
<p className="text-muted-foreground mt-1 text-xs">
|
<p className="text-muted-foreground mt-1 text-xs">
|
||||||
<Trans>Expires on</Trans>{' '}
|
<Trans>
|
||||||
<LocaleDate date={token.expires} format={DateTime.DATETIME_FULL} />
|
Expires on
|
||||||
|
{i18n.date(token.expires, DateTime.DATETIME_FULL)}
|
||||||
|
</Trans>
|
||||||
</p>
|
</p>
|
||||||
) : (
|
) : (
|
||||||
<p className="text-muted-foreground mt-1 text-xs">
|
<p className="text-muted-foreground mt-1 text-xs">
|
||||||
|
|||||||
@ -16,11 +16,10 @@ import { Button } from '@documenso/ui/primitives/button';
|
|||||||
import { SettingsHeader } from '~/components/(dashboard)/settings/layout/header';
|
import { SettingsHeader } from '~/components/(dashboard)/settings/layout/header';
|
||||||
import { CreateWebhookDialog } from '~/components/(dashboard)/settings/webhooks/create-webhook-dialog';
|
import { CreateWebhookDialog } from '~/components/(dashboard)/settings/webhooks/create-webhook-dialog';
|
||||||
import { DeleteWebhookDialog } from '~/components/(dashboard)/settings/webhooks/delete-webhook-dialog';
|
import { DeleteWebhookDialog } from '~/components/(dashboard)/settings/webhooks/delete-webhook-dialog';
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
import { useCurrentTeam } from '~/providers/team';
|
import { useCurrentTeam } from '~/providers/team';
|
||||||
|
|
||||||
export default function WebhookPage() {
|
export default function WebhookPage() {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const team = useCurrentTeam();
|
const team = useCurrentTeam();
|
||||||
|
|
||||||
@ -91,10 +90,7 @@ export default function WebhookPage() {
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p className="text-muted-foreground mt-2 text-xs">
|
<p className="text-muted-foreground mt-2 text-xs">
|
||||||
<Trans>
|
<Trans>Created on {i18n.date(webhook.createdAt, DateTime.DATETIME_FULL)}</Trans>
|
||||||
Created on{' '}
|
|
||||||
<LocaleDate date={webhook.createdAt} format={DateTime.DATETIME_FULL} />
|
|
||||||
</Trans>
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import { Suspense } from 'react';
|
import { Suspense } from 'react';
|
||||||
|
|
||||||
import { Caveat, Inter } from 'next/font/google';
|
import { Caveat, Inter } from 'next/font/google';
|
||||||
import { cookies, headers } from 'next/headers';
|
|
||||||
|
|
||||||
import { AxiomWebVitals } from 'next-axiom';
|
import { AxiomWebVitals } from 'next-axiom';
|
||||||
import { PublicEnvScript } from 'next-runtime-env';
|
import { PublicEnvScript } from 'next-runtime-env';
|
||||||
@ -9,12 +8,8 @@ import { PublicEnvScript } from 'next-runtime-env';
|
|||||||
import { FeatureFlagProvider } from '@documenso/lib/client-only/providers/feature-flag';
|
import { FeatureFlagProvider } from '@documenso/lib/client-only/providers/feature-flag';
|
||||||
import { I18nClientProvider } from '@documenso/lib/client-only/providers/i18n.client';
|
import { I18nClientProvider } from '@documenso/lib/client-only/providers/i18n.client';
|
||||||
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
|
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
|
||||||
import { LocaleProvider } from '@documenso/lib/client-only/providers/locale';
|
|
||||||
import { IS_APP_WEB_I18N_ENABLED, NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
|
import { IS_APP_WEB_I18N_ENABLED, NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
|
||||||
import type { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
|
|
||||||
import { ZSupportedLanguageCodeSchema } from '@documenso/lib/constants/i18n';
|
|
||||||
import { getServerComponentAllFlags } from '@documenso/lib/server-only/feature-flags/get-server-component-feature-flag';
|
import { getServerComponentAllFlags } from '@documenso/lib/server-only/feature-flags/get-server-component-feature-flag';
|
||||||
import { getLocale } from '@documenso/lib/server-only/headers/get-locale';
|
|
||||||
import { TrpcProvider } from '@documenso/trpc/react';
|
import { TrpcProvider } from '@documenso/trpc/react';
|
||||||
import { cn } from '@documenso/ui/lib/utils';
|
import { cn } from '@documenso/ui/lib/utils';
|
||||||
import { Toaster } from '@documenso/ui/primitives/toaster';
|
import { Toaster } from '@documenso/ui/primitives/toaster';
|
||||||
@ -61,32 +56,7 @@ export function generateMetadata() {
|
|||||||
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
||||||
const flags = await getServerComponentAllFlags();
|
const flags = await getServerComponentAllFlags();
|
||||||
|
|
||||||
const locale = getLocale();
|
const { i18n, lang, locales } = setupI18nSSR();
|
||||||
|
|
||||||
let overrideLang: (typeof SUPPORTED_LANGUAGE_CODES)[number] | undefined;
|
|
||||||
|
|
||||||
// Should be safe to remove when we upgrade NextJS.
|
|
||||||
// https://github.com/vercel/next.js/pull/65008
|
|
||||||
// Currently if the middleware sets the cookie, it's not accessible in the cookies
|
|
||||||
// during the same render.
|
|
||||||
// So we go the roundabout way of checking the header for the set-cookie value.
|
|
||||||
if (!cookies().get('i18n')) {
|
|
||||||
const setCookieValue = headers().get('set-cookie');
|
|
||||||
const i18nCookie = setCookieValue?.split(';').find((cookie) => cookie.startsWith('i18n='));
|
|
||||||
|
|
||||||
if (i18nCookie) {
|
|
||||||
const i18n = i18nCookie.split('=')[1];
|
|
||||||
|
|
||||||
overrideLang = ZSupportedLanguageCodeSchema.parse(i18n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disable i18n for now until we get translations.
|
|
||||||
if (!IS_APP_WEB_I18N_ENABLED) {
|
|
||||||
overrideLang = 'en';
|
|
||||||
}
|
|
||||||
|
|
||||||
const { lang, i18n } = setupI18nSSR(overrideLang);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<html
|
<html
|
||||||
@ -110,21 +80,22 @@ export default async function RootLayout({ children }: { children: React.ReactNo
|
|||||||
</Suspense>
|
</Suspense>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<LocaleProvider locale={locale}>
|
<FeatureFlagProvider initialFlags={flags}>
|
||||||
<FeatureFlagProvider initialFlags={flags}>
|
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
|
||||||
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
|
<TooltipProvider>
|
||||||
<TooltipProvider>
|
<TrpcProvider>
|
||||||
<TrpcProvider>
|
<I18nClientProvider
|
||||||
<I18nClientProvider initialLocale={lang} initialMessages={i18n.messages}>
|
initialLocaleData={{ lang, locales }}
|
||||||
{children}
|
initialMessages={i18n.messages}
|
||||||
</I18nClientProvider>
|
>
|
||||||
</TrpcProvider>
|
{children}
|
||||||
</TooltipProvider>
|
</I18nClientProvider>
|
||||||
</ThemeProvider>
|
</TrpcProvider>
|
||||||
|
</TooltipProvider>
|
||||||
|
</ThemeProvider>
|
||||||
|
|
||||||
<Toaster />
|
<Toaster />
|
||||||
</FeatureFlagProvider>
|
</FeatureFlagProvider>
|
||||||
</LocaleProvider>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -22,12 +22,10 @@ import { DataTablePagination } from '@documenso/ui/primitives/data-table-paginat
|
|||||||
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
||||||
import { TableCell } from '@documenso/ui/primitives/table';
|
import { TableCell } from '@documenso/ui/primitives/table';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
import { LeaveTeamDialog } from '../dialogs/leave-team-dialog';
|
import { LeaveTeamDialog } from '../dialogs/leave-team-dialog';
|
||||||
|
|
||||||
export const CurrentUserTeamsDataTable = () => {
|
export const CurrentUserTeamsDataTable = () => {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const updateSearchParams = useUpdateSearchParams();
|
const updateSearchParams = useUpdateSearchParams();
|
||||||
@ -91,7 +89,7 @@ export const CurrentUserTeamsDataTable = () => {
|
|||||||
{
|
{
|
||||||
header: _(msg`Member Since`),
|
header: _(msg`Member Since`),
|
||||||
accessorKey: 'createdAt',
|
accessorKey: 'createdAt',
|
||||||
cell: ({ row }) => <LocaleDate date={row.original.createdAt} />,
|
cell: ({ row }) => i18n.date(row.original.createdAt),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'actions',
|
id: 'actions',
|
||||||
|
|||||||
@ -18,13 +18,11 @@ import { DataTablePagination } from '@documenso/ui/primitives/data-table-paginat
|
|||||||
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
||||||
import { TableCell } from '@documenso/ui/primitives/table';
|
import { TableCell } from '@documenso/ui/primitives/table';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
import { CreateTeamCheckoutDialog } from '../dialogs/create-team-checkout-dialog';
|
import { CreateTeamCheckoutDialog } from '../dialogs/create-team-checkout-dialog';
|
||||||
import { PendingUserTeamsDataTableActions } from './pending-user-teams-data-table-actions';
|
import { PendingUserTeamsDataTableActions } from './pending-user-teams-data-table-actions';
|
||||||
|
|
||||||
export const PendingUserTeamsDataTable = () => {
|
export const PendingUserTeamsDataTable = () => {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const updateSearchParams = useUpdateSearchParams();
|
const updateSearchParams = useUpdateSearchParams();
|
||||||
@ -79,7 +77,7 @@ export const PendingUserTeamsDataTable = () => {
|
|||||||
{
|
{
|
||||||
header: _(msg`Created on`),
|
header: _(msg`Created on`),
|
||||||
accessorKey: 'createdAt',
|
accessorKey: 'createdAt',
|
||||||
cell: ({ row }) => <LocaleDate date={row.original.createdAt} />,
|
cell: ({ row }) => i18n.date(row.original.createdAt),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'actions',
|
id: 'actions',
|
||||||
|
|||||||
@ -27,8 +27,6 @@ import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
|||||||
import { TableCell } from '@documenso/ui/primitives/table';
|
import { TableCell } from '@documenso/ui/primitives/table';
|
||||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
export type TeamMemberInvitesDataTableProps = {
|
export type TeamMemberInvitesDataTableProps = {
|
||||||
teamId: number;
|
teamId: number;
|
||||||
};
|
};
|
||||||
@ -37,7 +35,7 @@ export const TeamMemberInvitesDataTable = ({ teamId }: TeamMemberInvitesDataTabl
|
|||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const updateSearchParams = useUpdateSearchParams();
|
const updateSearchParams = useUpdateSearchParams();
|
||||||
|
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
|
|
||||||
const parsedSearchParams = ZBaseTableSearchParamsSchema.parse(
|
const parsedSearchParams = ZBaseTableSearchParamsSchema.parse(
|
||||||
@ -129,7 +127,7 @@ export const TeamMemberInvitesDataTable = ({ teamId }: TeamMemberInvitesDataTabl
|
|||||||
{
|
{
|
||||||
header: _(msg`Invited At`),
|
header: _(msg`Invited At`),
|
||||||
accessorKey: 'createdAt',
|
accessorKey: 'createdAt',
|
||||||
cell: ({ row }) => <LocaleDate date={row.original.createdAt} />,
|
cell: ({ row }) => i18n.date(row.original.createdAt),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: _(msg`Actions`),
|
header: _(msg`Actions`),
|
||||||
|
|||||||
@ -29,8 +29,6 @@ import {
|
|||||||
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
import { Skeleton } from '@documenso/ui/primitives/skeleton';
|
||||||
import { TableCell } from '@documenso/ui/primitives/table';
|
import { TableCell } from '@documenso/ui/primitives/table';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
import { DeleteTeamMemberDialog } from '../dialogs/delete-team-member-dialog';
|
import { DeleteTeamMemberDialog } from '../dialogs/delete-team-member-dialog';
|
||||||
import { UpdateTeamMemberDialog } from '../dialogs/update-team-member-dialog';
|
import { UpdateTeamMemberDialog } from '../dialogs/update-team-member-dialog';
|
||||||
|
|
||||||
@ -47,7 +45,7 @@ export const TeamMembersDataTable = ({
|
|||||||
teamId,
|
teamId,
|
||||||
teamName,
|
teamName,
|
||||||
}: TeamMembersDataTableProps) => {
|
}: TeamMembersDataTableProps) => {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
|
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const updateSearchParams = useUpdateSearchParams();
|
const updateSearchParams = useUpdateSearchParams();
|
||||||
@ -114,7 +112,7 @@ export const TeamMembersDataTable = ({
|
|||||||
{
|
{
|
||||||
header: _(msg`Member Since`),
|
header: _(msg`Member Since`),
|
||||||
accessorKey: 'createdAt',
|
accessorKey: 'createdAt',
|
||||||
cell: ({ row }) => <LocaleDate date={row.original.createdAt} />,
|
cell: ({ row }) => i18n.date(row.original.createdAt),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: _(msg`Actions`),
|
header: _(msg`Actions`),
|
||||||
|
|||||||
@ -3,7 +3,9 @@
|
|||||||
import { useMemo, useState } from 'react';
|
import { useMemo, useState } from 'react';
|
||||||
|
|
||||||
import { Trans } from '@lingui/macro';
|
import { Trans } from '@lingui/macro';
|
||||||
|
import { useLingui } from '@lingui/react';
|
||||||
import { ArrowRightIcon, Loader } from 'lucide-react';
|
import { ArrowRightIcon, Loader } from 'lucide-react';
|
||||||
|
import { DateTime } from 'luxon';
|
||||||
import { match } from 'ts-pattern';
|
import { match } from 'ts-pattern';
|
||||||
import { UAParser } from 'ua-parser-js';
|
import { UAParser } from 'ua-parser-js';
|
||||||
|
|
||||||
@ -18,8 +20,6 @@ import { Badge } from '@documenso/ui/primitives/badge';
|
|||||||
import { Button } from '@documenso/ui/primitives/button';
|
import { Button } from '@documenso/ui/primitives/button';
|
||||||
import { Sheet, SheetContent, SheetTrigger } from '@documenso/ui/primitives/sheet';
|
import { Sheet, SheetContent, SheetTrigger } from '@documenso/ui/primitives/sheet';
|
||||||
|
|
||||||
import { LocaleDate } from '~/components/formatter/locale-date';
|
|
||||||
|
|
||||||
import { DocumentHistorySheetChanges } from './document-history-sheet-changes';
|
import { DocumentHistorySheetChanges } from './document-history-sheet-changes';
|
||||||
|
|
||||||
export type DocumentHistorySheetProps = {
|
export type DocumentHistorySheetProps = {
|
||||||
@ -37,6 +37,8 @@ export const DocumentHistorySheet = ({
|
|||||||
onMenuOpenChange,
|
onMenuOpenChange,
|
||||||
children,
|
children,
|
||||||
}: DocumentHistorySheetProps) => {
|
}: DocumentHistorySheetProps) => {
|
||||||
|
const { i18n } = useLingui();
|
||||||
|
|
||||||
const [isUserDetailsVisible, setIsUserDetailsVisible] = useState(false);
|
const [isUserDetailsVisible, setIsUserDetailsVisible] = useState(false);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@ -153,7 +155,9 @@ export const DocumentHistorySheet = ({
|
|||||||
{formatDocumentAuditLogActionString(auditLog, userId)}
|
{formatDocumentAuditLogActionString(auditLog, userId)}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-foreground/50 text-xs">
|
<p className="text-foreground/50 text-xs">
|
||||||
<LocaleDate date={auditLog.createdAt} format="d MMM, yyyy HH:MM a" />
|
{DateTime.fromJSDate(auditLog.createdAt)
|
||||||
|
.setLocale(i18n.locales?.[0] || i18n.locale)
|
||||||
|
.toFormat('d MMM, yyyy HH:MM a')}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,49 +0,0 @@
|
|||||||
'use client';
|
|
||||||
|
|
||||||
import type { HTMLAttributes } from 'react';
|
|
||||||
import { useCallback, useEffect, useState } from 'react';
|
|
||||||
|
|
||||||
import type { DateTimeFormatOptions } from 'luxon';
|
|
||||||
import { DateTime } from 'luxon';
|
|
||||||
|
|
||||||
import { useLocale } from '@documenso/lib/client-only/providers/locale';
|
|
||||||
|
|
||||||
export type LocaleDateProps = HTMLAttributes<HTMLSpanElement> & {
|
|
||||||
date: string | number | Date;
|
|
||||||
format?: DateTimeFormatOptions | string;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Formats the date based on the user locale.
|
|
||||||
*
|
|
||||||
* Will use the estimated locale from the user headers on SSR, then will use
|
|
||||||
* the client browser locale once mounted.
|
|
||||||
*/
|
|
||||||
export const LocaleDate = ({ className, date, format, ...props }: LocaleDateProps) => {
|
|
||||||
const { locale } = useLocale();
|
|
||||||
|
|
||||||
const formatDateTime = useCallback(
|
|
||||||
(date: DateTime) => {
|
|
||||||
if (typeof format === 'string') {
|
|
||||||
return date.toFormat(format);
|
|
||||||
}
|
|
||||||
|
|
||||||
return date.toLocaleString(format);
|
|
||||||
},
|
|
||||||
[format],
|
|
||||||
);
|
|
||||||
|
|
||||||
const [localeDate, setLocaleDate] = useState(() =>
|
|
||||||
formatDateTime(DateTime.fromJSDate(new Date(date)).setLocale(locale)),
|
|
||||||
);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
setLocaleDate(formatDateTime(DateTime.fromJSDate(new Date(date))));
|
|
||||||
}, [date, format, formatDateTime]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<span className={className} {...props}>
|
|
||||||
{localeDate}
|
|
||||||
</span>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
@ -52,8 +52,6 @@ import { useToast } from '@documenso/ui/primitives/use-toast';
|
|||||||
|
|
||||||
import { useOptionalCurrentTeam } from '~/providers/team';
|
import { useOptionalCurrentTeam } from '~/providers/team';
|
||||||
|
|
||||||
import { LocaleDate } from '../formatter/locale-date';
|
|
||||||
|
|
||||||
export type ManagePublicTemplateDialogProps = {
|
export type ManagePublicTemplateDialogProps = {
|
||||||
directTemplates: (Template & {
|
directTemplates: (Template & {
|
||||||
directLink: Pick<TemplateDirectLink, 'token' | 'enabled'>;
|
directLink: Pick<TemplateDirectLink, 'token' | 'enabled'>;
|
||||||
@ -93,7 +91,7 @@ export const ManagePublicTemplateDialog = ({
|
|||||||
onIsOpenChange,
|
onIsOpenChange,
|
||||||
...props
|
...props
|
||||||
}: ManagePublicTemplateDialogProps) => {
|
}: ManagePublicTemplateDialogProps) => {
|
||||||
const { _ } = useLingui();
|
const { _, i18n } = useLingui();
|
||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
|
|
||||||
const [open, onOpenChange] = useState(isOpen);
|
const [open, onOpenChange] = useState(isOpen);
|
||||||
@ -300,7 +298,7 @@ export const ManagePublicTemplateDialog = ({
|
|||||||
</TableCell>
|
</TableCell>
|
||||||
|
|
||||||
<TableCell className="text-muted-foreground text-sm">
|
<TableCell className="text-muted-foreground text-sm">
|
||||||
<LocaleDate date={row.createdAt} />
|
{i18n.date(row.createdAt)}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
|
||||||
<TableCell>
|
<TableCell>
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import { NextResponse } from 'next/server';
|
|||||||
import { getToken } from 'next-auth/jwt';
|
import { getToken } from 'next-auth/jwt';
|
||||||
|
|
||||||
import { TEAM_URL_ROOT_REGEX } from '@documenso/lib/constants/teams';
|
import { TEAM_URL_ROOT_REGEX } from '@documenso/lib/constants/teams';
|
||||||
import { extractSupportedLanguage } from '@documenso/lib/utils/i18n';
|
import { extractLocaleData } from '@documenso/lib/utils/i18n';
|
||||||
import { formatDocumentsPath } from '@documenso/lib/utils/teams';
|
import { formatDocumentsPath } from '@documenso/lib/utils/teams';
|
||||||
|
|
||||||
async function middleware(req: NextRequest): Promise<NextResponse> {
|
async function middleware(req: NextRequest): Promise<NextResponse> {
|
||||||
@ -96,7 +96,7 @@ async function middleware(req: NextRequest): Promise<NextResponse> {
|
|||||||
export default async function middlewareWrapper(req: NextRequest) {
|
export default async function middlewareWrapper(req: NextRequest) {
|
||||||
const response = await middleware(req);
|
const response = await middleware(req);
|
||||||
|
|
||||||
const lang = extractSupportedLanguage({
|
const { lang } = extractLocaleData({
|
||||||
headers: req.headers,
|
headers: req.headers,
|
||||||
cookies: cookies(),
|
cookies: cookies(),
|
||||||
});
|
});
|
||||||
|
|||||||
@ -5,19 +5,24 @@ import { useState } from 'react';
|
|||||||
import { type Messages, setupI18n } from '@lingui/core';
|
import { type Messages, setupI18n } from '@lingui/core';
|
||||||
import { I18nProvider } from '@lingui/react';
|
import { I18nProvider } from '@lingui/react';
|
||||||
|
|
||||||
|
import type { I18nLocaleData } from '../../constants/i18n';
|
||||||
|
|
||||||
export function I18nClientProvider({
|
export function I18nClientProvider({
|
||||||
children,
|
children,
|
||||||
initialLocale,
|
initialLocaleData,
|
||||||
initialMessages,
|
initialMessages,
|
||||||
}: {
|
}: {
|
||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
initialLocale: string;
|
initialLocaleData: I18nLocaleData;
|
||||||
initialMessages: Messages;
|
initialMessages: Messages;
|
||||||
}) {
|
}) {
|
||||||
|
const { lang, locales } = initialLocaleData;
|
||||||
|
|
||||||
const [i18n] = useState(() => {
|
const [i18n] = useState(() => {
|
||||||
return setupI18n({
|
return setupI18n({
|
||||||
locale: initialLocale,
|
locale: lang,
|
||||||
messages: { [initialLocale]: initialMessages },
|
locales: locales,
|
||||||
|
messages: { [lang]: initialMessages },
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,26 +1,26 @@
|
|||||||
import 'server-only';
|
import 'server-only';
|
||||||
|
|
||||||
import { cookies } from 'next/headers';
|
import { cookies, headers } from 'next/headers';
|
||||||
|
|
||||||
import type { I18n, Messages } from '@lingui/core';
|
import type { I18n, Messages } from '@lingui/core';
|
||||||
import { setupI18n } from '@lingui/core';
|
import { setupI18n } from '@lingui/core';
|
||||||
import { setI18n } from '@lingui/react/server';
|
import { setI18n } from '@lingui/react/server';
|
||||||
|
|
||||||
import { IS_APP_WEB, IS_APP_WEB_I18N_ENABLED } from '../../constants/app';
|
import { IS_APP_WEB } from '../../constants/app';
|
||||||
import { SUPPORTED_LANGUAGE_CODES } from '../../constants/i18n';
|
import { SUPPORTED_LANGUAGE_CODES } from '../../constants/i18n';
|
||||||
import { extractSupportedLanguage } from '../../utils/i18n';
|
import { extractLocaleData } from '../../utils/i18n';
|
||||||
|
|
||||||
type SupportedLocales = (typeof SUPPORTED_LANGUAGE_CODES)[number];
|
type SupportedLanguages = (typeof SUPPORTED_LANGUAGE_CODES)[number];
|
||||||
|
|
||||||
async function loadCatalog(locale: SupportedLocales): Promise<{
|
async function loadCatalog(lang: SupportedLanguages): Promise<{
|
||||||
[k: string]: Messages;
|
[k: string]: Messages;
|
||||||
}> {
|
}> {
|
||||||
const { messages } = await import(
|
const { messages } = await import(
|
||||||
`../../translations/${locale}/${IS_APP_WEB ? 'web' : 'marketing'}.js`
|
`../../translations/${lang}/${IS_APP_WEB ? 'web' : 'marketing'}.js`
|
||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
[locale]: messages,
|
[lang]: messages,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,18 +31,18 @@ export const allMessages = catalogs.reduce((acc, oneCatalog) => {
|
|||||||
return { ...acc, ...oneCatalog };
|
return { ...acc, ...oneCatalog };
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
type AllI18nInstances = { [K in SupportedLocales]: I18n };
|
type AllI18nInstances = { [K in SupportedLanguages]: I18n };
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||||||
export const allI18nInstances = SUPPORTED_LANGUAGE_CODES.reduce((acc, locale) => {
|
export const allI18nInstances = SUPPORTED_LANGUAGE_CODES.reduce((acc, lang) => {
|
||||||
const messages = allMessages[locale] ?? {};
|
const messages = allMessages[lang] ?? {};
|
||||||
|
|
||||||
const i18n = setupI18n({
|
const i18n = setupI18n({
|
||||||
locale,
|
locale: lang,
|
||||||
messages: { [locale]: messages },
|
messages: { [lang]: messages },
|
||||||
});
|
});
|
||||||
|
|
||||||
return { ...acc, [locale]: i18n };
|
return { ...acc, [lang]: i18n };
|
||||||
}, {}) as AllI18nInstances;
|
}, {}) as AllI18nInstances;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,24 +50,23 @@ export const allI18nInstances = SUPPORTED_LANGUAGE_CODES.reduce((acc, locale) =>
|
|||||||
*
|
*
|
||||||
* https://lingui.dev/tutorials/react-rsc#pages-layouts-and-lingui
|
* https://lingui.dev/tutorials/react-rsc#pages-layouts-and-lingui
|
||||||
*/
|
*/
|
||||||
export const setupI18nSSR = (overrideLang?: SupportedLocales) => {
|
export const setupI18nSSR = () => {
|
||||||
let lang =
|
const { lang, locales } = extractLocaleData({
|
||||||
overrideLang ||
|
cookies: cookies(),
|
||||||
extractSupportedLanguage({
|
headers: headers(),
|
||||||
cookies: cookies(),
|
});
|
||||||
});
|
|
||||||
|
|
||||||
// Override web app to be English.
|
|
||||||
if (!IS_APP_WEB_I18N_ENABLED && IS_APP_WEB) {
|
|
||||||
lang = 'en';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get and set a ready-made i18n instance for the given language.
|
// Get and set a ready-made i18n instance for the given language.
|
||||||
const i18n = allI18nInstances[lang];
|
const i18n = allI18nInstances[lang];
|
||||||
|
|
||||||
|
// Reactivate the i18n instance with the locale for date and number formatting.
|
||||||
|
i18n.activate(lang, locales);
|
||||||
|
|
||||||
setI18n(i18n);
|
setI18n(i18n);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
lang,
|
lang,
|
||||||
|
locales,
|
||||||
i18n,
|
i18n,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,37 +0,0 @@
|
|||||||
'use client';
|
|
||||||
|
|
||||||
import { createContext, useContext } from 'react';
|
|
||||||
|
|
||||||
export type LocaleContextValue = {
|
|
||||||
locale: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const LocaleContext = createContext<LocaleContextValue | null>(null);
|
|
||||||
|
|
||||||
export const useLocale = () => {
|
|
||||||
const context = useContext(LocaleContext);
|
|
||||||
|
|
||||||
if (!context) {
|
|
||||||
throw new Error('useLocale must be used within a LocaleProvider');
|
|
||||||
}
|
|
||||||
|
|
||||||
return context;
|
|
||||||
};
|
|
||||||
|
|
||||||
export function LocaleProvider({
|
|
||||||
children,
|
|
||||||
locale,
|
|
||||||
}: {
|
|
||||||
children: React.ReactNode;
|
|
||||||
locale: string;
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<LocaleContext.Provider
|
|
||||||
value={{
|
|
||||||
locale: locale,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{children}
|
|
||||||
</LocaleContext.Provider>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@ -1,6 +1,5 @@
|
|||||||
import { env } from 'next-runtime-env';
|
import { env } from 'next-runtime-env';
|
||||||
|
|
||||||
export const IS_APP_WEB_I18N_ENABLED = false;
|
|
||||||
export const APP_DOCUMENT_UPLOAD_SIZE_LIMIT =
|
export const APP_DOCUMENT_UPLOAD_SIZE_LIMIT =
|
||||||
Number(process.env.NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT) || 50;
|
Number(process.env.NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT) || 50;
|
||||||
|
|
||||||
@ -11,6 +10,7 @@ export const NEXT_PRIVATE_INTERNAL_WEBAPP_URL = process.env.NEXT_PRIVATE_INTERNA
|
|||||||
export const IS_APP_MARKETING = process.env.NEXT_PUBLIC_PROJECT === 'marketing';
|
export const IS_APP_MARKETING = process.env.NEXT_PUBLIC_PROJECT === 'marketing';
|
||||||
export const IS_APP_WEB = process.env.NEXT_PUBLIC_PROJECT === 'web';
|
export const IS_APP_WEB = process.env.NEXT_PUBLIC_PROJECT === 'web';
|
||||||
export const IS_BILLING_ENABLED = () => env('NEXT_PUBLIC_FEATURE_BILLING_ENABLED') === 'true';
|
export const IS_BILLING_ENABLED = () => env('NEXT_PUBLIC_FEATURE_BILLING_ENABLED') === 'true';
|
||||||
|
export const IS_APP_WEB_I18N_ENABLED = false;
|
||||||
|
|
||||||
export const APP_FOLDER = () => (IS_APP_MARKETING ? 'marketing' : 'web');
|
export const APP_FOLDER = () => (IS_APP_MARKETING ? 'marketing' : 'web');
|
||||||
|
|
||||||
|
|||||||
@ -6,9 +6,22 @@ export const ZSupportedLanguageCodeSchema = z.enum(SUPPORTED_LANGUAGE_CODES).cat
|
|||||||
|
|
||||||
export type SupportedLanguageCodes = (typeof SUPPORTED_LANGUAGE_CODES)[number];
|
export type SupportedLanguageCodes = (typeof SUPPORTED_LANGUAGE_CODES)[number];
|
||||||
|
|
||||||
|
export type I18nLocaleData = {
|
||||||
|
/**
|
||||||
|
* The supported language extracted from the locale.
|
||||||
|
*/
|
||||||
|
lang: SupportedLanguageCodes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The preferred locales.
|
||||||
|
*/
|
||||||
|
locales: string[];
|
||||||
|
};
|
||||||
|
|
||||||
export const APP_I18N_OPTIONS = {
|
export const APP_I18N_OPTIONS = {
|
||||||
supportedLangs: SUPPORTED_LANGUAGE_CODES,
|
supportedLangs: SUPPORTED_LANGUAGE_CODES,
|
||||||
sourceLang: 'en',
|
sourceLang: 'en',
|
||||||
|
defaultLocale: 'en-US',
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
type SupportedLanguage = {
|
type SupportedLanguage = {
|
||||||
|
|||||||
@ -1,11 +0,0 @@
|
|||||||
import { headers } from 'next/headers';
|
|
||||||
|
|
||||||
export const getLocale = () => {
|
|
||||||
const headerItems = headers();
|
|
||||||
|
|
||||||
const locales = headerItems.get('accept-language') ?? 'en-US';
|
|
||||||
|
|
||||||
const [locale] = locales.split(',');
|
|
||||||
|
|
||||||
return locale;
|
|
||||||
};
|
|
||||||
File diff suppressed because one or more lines are too long
@ -43,7 +43,7 @@ msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
|
|||||||
msgstr "{0, plural, one {(1 Zeichen über dem Limit)} other {(# Zeichen über dem Limit)}}"
|
msgstr "{0, plural, one {(1 Zeichen über dem Limit)} other {(# Zeichen über dem Limit)}}"
|
||||||
|
|
||||||
#: apps/web/src/components/forms/public-profile-form.tsx:237
|
#: apps/web/src/components/forms/public-profile-form.tsx:237
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:397
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:395
|
||||||
msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
|
msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
|
||||||
msgstr "{0, plural, one {# Zeichen über dem Limit} other {# Zeichen über dem Limit}}"
|
msgstr "{0, plural, one {# Zeichen über dem Limit} other {# Zeichen über dem Limit}}"
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ msgstr "{0, plural, one {Warte auf 1 Empfänger} other {Warte auf # Empfänger}}
|
|||||||
msgid "{0, plural, zero {Select values} other {# selected...}}"
|
msgid "{0, plural, zero {Select values} other {# selected...}}"
|
||||||
msgstr "{0, plural, zero {Werte auswählen} other {# ausgewählt...}}"
|
msgstr "{0, plural, zero {Werte auswählen} other {# ausgewählt...}}"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
|
||||||
msgid "{0} direct signing templates"
|
msgid "{0} direct signing templates"
|
||||||
msgstr "{0} direkte Signaturvorlagen"
|
msgstr "{0} direkte Signaturvorlagen"
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ msgid "{numberOfSeats, plural, one {# member} other {# members}}"
|
|||||||
msgstr "{numberOfSeats, plural, one {# Mitglied} other {# Mitglieder}}"
|
msgstr "{numberOfSeats, plural, one {# Mitglied} other {# Mitglieder}}"
|
||||||
|
|
||||||
#: apps/web/src/components/forms/public-profile-form.tsx:231
|
#: apps/web/src/components/forms/public-profile-form.tsx:231
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:391
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
|
||||||
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
|
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
|
||||||
msgstr "{remaningLength, plural, one {# Zeichen verbleibend} other {# Zeichen verbleibend}}"
|
msgstr "{remaningLength, plural, one {# Zeichen verbleibend} other {# Zeichen verbleibend}}"
|
||||||
|
|
||||||
@ -190,19 +190,19 @@ msgid "Account deleted"
|
|||||||
msgstr "Konto gelöscht"
|
msgstr "Konto gelöscht"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:105
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:105
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:106
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:104
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:121
|
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:121
|
||||||
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
|
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:120
|
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:118
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr "Aktion"
|
msgstr "Aktion"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:89
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:85
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:141
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:135
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:133
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:144
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:142
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:120
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:118
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:129
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:127
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Aktionen"
|
msgstr "Aktionen"
|
||||||
|
|
||||||
@ -299,7 +299,7 @@ msgstr "Fügen Sie den Betreff und die Nachricht hinzu, die Sie den Unterzeichne
|
|||||||
msgid "Adding and removing seats will adjust your invoice accordingly."
|
msgid "Adding and removing seats will adjust your invoice accordingly."
|
||||||
msgstr "Das Hinzufügen und Entfernen von Sitzplätzen wird Ihre Rechnung entsprechend anpassen."
|
msgstr "Das Hinzufügen und Entfernen von Sitzplätzen wird Ihre Rechnung entsprechend anpassen."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:61
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:59
|
||||||
msgid "Admin Actions"
|
msgid "Admin Actions"
|
||||||
msgstr "Admin-Aktionen"
|
msgstr "Admin-Aktionen"
|
||||||
|
|
||||||
@ -512,8 +512,8 @@ msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde."
|
|||||||
#: apps/web/src/components/forms/v2/signup.tsx:160
|
#: apps/web/src/components/forms/v2/signup.tsx:160
|
||||||
#: apps/web/src/components/forms/v2/signup.tsx:183
|
#: apps/web/src/components/forms/v2/signup.tsx:183
|
||||||
#: apps/web/src/components/forms/v2/signup.tsx:197
|
#: apps/web/src/components/forms/v2/signup.tsx:197
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:141
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
|
||||||
msgid "An unknown error occurred"
|
msgid "An unknown error occurred"
|
||||||
msgstr "Es ist ein unbekannter Fehler aufgetreten"
|
msgstr "Es ist ein unbekannter Fehler aufgetreten"
|
||||||
|
|
||||||
@ -521,9 +521,9 @@ msgstr "Es ist ein unbekannter Fehler aufgetreten"
|
|||||||
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
|
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
|
||||||
msgstr "Alle Zahlungsmethoden, die mit diesem Team verbunden sind, bleiben diesem Team zugeordnet. Bitte kontaktiere uns, wenn du diese Informationen aktualisieren möchtest."
|
msgstr "Alle Zahlungsmethoden, die mit diesem Team verbunden sind, bleiben diesem Team zugeordnet. Bitte kontaktiere uns, wenn du diese Informationen aktualisieren möchtest."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:23
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:22
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:43
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:42
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:57
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:56
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:90
|
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:90
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:93
|
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:93
|
||||||
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:81
|
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:81
|
||||||
@ -564,7 +564,7 @@ msgstr "Bist du dir sicher, dass du dieses Team löschen möchtest?"
|
|||||||
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
|
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
|
||||||
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
|
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
|
||||||
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
|
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:441
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:439
|
||||||
msgid "Are you sure?"
|
msgid "Are you sure?"
|
||||||
msgstr "Bist du dir sicher?"
|
msgstr "Bist du dir sicher?"
|
||||||
|
|
||||||
@ -624,7 +624,7 @@ msgstr "Banner aktualisiert"
|
|||||||
msgid "Basic details"
|
msgid "Basic details"
|
||||||
msgstr "Basisdetails"
|
msgstr "Basisdetails"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74
|
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:72
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117
|
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120
|
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120
|
||||||
@ -633,7 +633,7 @@ msgstr "Basisdetails"
|
|||||||
msgid "Billing"
|
msgid "Billing"
|
||||||
msgstr "Abrechnung"
|
msgstr "Abrechnung"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:101
|
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr "Browser"
|
msgstr "Browser"
|
||||||
|
|
||||||
@ -687,7 +687,7 @@ msgstr "Durch die Aktivierung von 2FA müssen Sie jedes Mal, wenn Sie sich anmel
|
|||||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
|
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
|
||||||
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
|
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
|
||||||
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
|
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:452
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:450
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Abbrechen"
|
msgstr "Abbrechen"
|
||||||
|
|
||||||
@ -737,7 +737,7 @@ msgstr "Klicken Sie hier, um zu beginnen"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:78
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:78
|
||||||
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
|
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:131
|
#: apps/web/src/components/document/document-history-sheet.tsx:133
|
||||||
msgid "Click here to retry"
|
msgid "Click here to retry"
|
||||||
msgstr "Klicken Sie hier, um es erneut zu versuchen"
|
msgstr "Klicken Sie hier, um es erneut zu versuchen"
|
||||||
|
|
||||||
@ -764,8 +764,8 @@ msgstr "Klicken Sie, um das Feld einzufügen"
|
|||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
|
||||||
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
|
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
|
||||||
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
|
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:321
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:425
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:423
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
@ -809,12 +809,12 @@ msgstr "Konfigurieren Sie die allgemeinen Einstellungen für das Dokument."
|
|||||||
msgid "Configure general settings for the template."
|
msgid "Configure general settings for the template."
|
||||||
msgstr "Konfigurieren Sie die allgemeinen Einstellungen für die Vorlage."
|
msgstr "Konfigurieren Sie die allgemeinen Einstellungen für die Vorlage."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:339
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:337
|
||||||
msgid "Configure template"
|
msgid "Configure template"
|
||||||
msgstr "Vorlage konfigurieren"
|
msgstr "Vorlage konfigurieren"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:479
|
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:479
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:462
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Bestätigen"
|
msgstr "Bestätigen"
|
||||||
|
|
||||||
@ -853,7 +853,7 @@ msgstr "Inhalt"
|
|||||||
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
|
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
|
||||||
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
|
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
|
||||||
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
|
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:330
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:328
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
msgstr "Fortfahren"
|
msgstr "Fortfahren"
|
||||||
|
|
||||||
@ -959,12 +959,12 @@ msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensign
|
|||||||
msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
|
msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
|
||||||
msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensignieren. Offenes und schönes Signieren liegt in Ihrer Reichweite."
|
msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensignieren. Offenes und schönes Signieren liegt in Ihrer Reichweite."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:63
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:48
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
|
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:57
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:276
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr "Erstellt"
|
msgstr "Erstellt"
|
||||||
|
|
||||||
@ -972,21 +972,27 @@ msgstr "Erstellt"
|
|||||||
msgid "Created At"
|
msgid "Created At"
|
||||||
msgstr "Erstellt am"
|
msgstr "Erstellt am"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:82
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:79
|
||||||
msgid "Created by"
|
msgid "Created by"
|
||||||
msgstr "Erstellt von"
|
msgstr "Erstellt von"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:49
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:48
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:68
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:78
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:101
|
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:80
|
|
||||||
msgid "Created on"
|
msgid "Created on"
|
||||||
msgstr "Erstellt am"
|
msgstr "Erstellt am"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:89
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:67
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:94
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:88
|
||||||
msgid "Created on <0/>"
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:93
|
||||||
msgstr "Erstellt am <0/>"
|
msgid "Created on {0}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Created on <0/>"
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
|
||||||
|
msgid "Created on{0}"
|
||||||
|
msgstr ">>>>>>> 4ca18b99 (fix: refactor dates)"
|
||||||
|
|
||||||
#: apps/web/src/components/forms/password.tsx:107
|
#: apps/web/src/components/forms/password.tsx:107
|
||||||
msgid "Current Password"
|
msgid "Current Password"
|
||||||
@ -1004,12 +1010,12 @@ msgstr "Täglich"
|
|||||||
msgid "Dark Mode"
|
msgid "Dark Mode"
|
||||||
msgstr "Dunkelmodus"
|
msgstr "Dunkelmodus"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:72
|
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:70
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
|
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Datum"
|
msgstr "Datum"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:88
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:85
|
||||||
msgid "Date created"
|
msgid "Date created"
|
||||||
msgstr "Erstellungsdatum"
|
msgstr "Erstellungsdatum"
|
||||||
|
|
||||||
@ -1026,12 +1032,12 @@ msgstr "Team-Einladung abgelehnt"
|
|||||||
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
|
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
|
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
|
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:86
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:104
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:91
|
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:91
|
||||||
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
|
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:119
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:122
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:109
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
|
||||||
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
|
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
|
||||||
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:109
|
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:109
|
||||||
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:167
|
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:167
|
||||||
@ -1090,7 +1096,7 @@ msgstr "Webhook löschen"
|
|||||||
msgid "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
|
msgid "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
|
||||||
msgstr "Löschen Sie Ihr Konto und alle Inhalte, einschließlich abgeschlossener Dokumente. Diese Aktion ist irreversibel und führt zur Kündigung Ihres Abonnements, seien Sie also vorsichtig."
|
msgstr "Löschen Sie Ihr Konto und alle Inhalte, einschließlich abgeschlossener Dokumente. Diese Aktion ist irreversibel und führt zur Kündigung Ihres Abonnements, seien Sie also vorsichtig."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:42
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr "Gelöscht"
|
msgstr "Gelöscht"
|
||||||
|
|
||||||
@ -1102,11 +1108,11 @@ msgstr "Konto wird gelöscht..."
|
|||||||
#~ msgid "Deleting document"
|
#~ msgid "Deleting document"
|
||||||
#~ msgstr "Deleting document"
|
#~ msgstr "Deleting document"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:77
|
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
|
||||||
msgid "Device"
|
msgid "Device"
|
||||||
msgstr "Gerät"
|
msgstr "Gerät"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:92
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:91
|
||||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
|
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
|
||||||
msgid "direct link"
|
msgid "direct link"
|
||||||
msgstr "Direkter Link"
|
msgstr "Direkter Link"
|
||||||
@ -1131,7 +1137,7 @@ msgstr "Die direkte Links-Signatur wurde deaktiviert"
|
|||||||
msgid "Direct link signing has been enabled"
|
msgid "Direct link signing has been enabled"
|
||||||
msgstr "Die direkte Links-Signatur wurde aktiviert"
|
msgstr "Die direkte Links-Signatur wurde aktiviert"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:96
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:95
|
||||||
msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
|
msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
|
||||||
msgstr "Direkte Linkvorlagen enthalten einen dynamischen Empfänger-Platzhalter. Jeder, der Zugriff auf diesen Link hat, kann das Dokument unterzeichnen, und es wird dann auf Ihrer Dokumenten-Seite angezeigt."
|
msgstr "Direkte Linkvorlagen enthalten einen dynamischen Empfänger-Platzhalter. Jeder, der Zugriff auf diesen Link hat, kann das Dokument unterzeichnen, und es wird dann auf Ihrer Dokumenten-Seite angezeigt."
|
||||||
|
|
||||||
@ -1143,7 +1149,7 @@ msgstr "Direkter Vorlagenlink gelöscht"
|
|||||||
msgid "Direct template link usage exceeded ({0}/{1})"
|
msgid "Direct template link usage exceeded ({0}/{1})"
|
||||||
msgstr "Die Verwendung des direkten Vorlagenlinks wurde überschritten ({0}/{1})"
|
msgstr "Die Verwendung des direkten Vorlagenlinks wurde überschritten ({0}/{1})"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:419
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:417
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Deaktivieren"
|
msgstr "Deaktivieren"
|
||||||
|
|
||||||
@ -1157,8 +1163,8 @@ msgstr "2FA deaktivieren"
|
|||||||
msgid "Disable Two Factor Authentication before deleting your account."
|
msgid "Disable Two Factor Authentication before deleting your account."
|
||||||
msgstr "Deaktivieren Sie die Zwei-Faktor-Authentifizierung, bevor Sie Ihr Konto löschen."
|
msgstr "Deaktivieren Sie die Zwei-Faktor-Authentifizierung, bevor Sie Ihr Konto löschen."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:75
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:80
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:79
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Deaktiviert"
|
msgstr "Deaktiviert"
|
||||||
|
|
||||||
@ -1182,7 +1188,7 @@ msgstr "Möchten Sie diese Vorlage duplizieren?"
|
|||||||
msgid "Documenso will delete <0>all of your documents</0>, along with all of your completed documents, signatures, and all other resources belonging to your Account."
|
msgid "Documenso will delete <0>all of your documents</0>, along with all of your completed documents, signatures, and all other resources belonging to your Account."
|
||||||
msgstr "Documenso wird <0>alle Ihre Dokumente</0> löschen, zusammen mit allen abgeschlossenen Dokumenten, Unterschriften und allen anderen Ressourcen, die zu Ihrem Konto gehören."
|
msgstr "Documenso wird <0>alle Ihre Dokumente</0> löschen, zusammen mit allen abgeschlossenen Dokumenten, Unterschriften und allen anderen Ressourcen, die zu Ihrem Konto gehören."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:122
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:119
|
||||||
msgid "Document"
|
msgid "Document"
|
||||||
msgstr "Dokument"
|
msgstr "Dokument"
|
||||||
|
|
||||||
@ -1225,11 +1231,11 @@ msgid "Document Duplicated"
|
|||||||
msgstr "Dokument dupliziert"
|
msgstr "Dokument dupliziert"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:158
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:158
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:102
|
#: apps/web/src/components/document/document-history-sheet.tsx:104
|
||||||
msgid "Document history"
|
msgid "Document history"
|
||||||
msgstr "Dokumentverlauf"
|
msgstr "Dokumentverlauf"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:74
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
|
||||||
msgid "Document ID"
|
msgid "Document ID"
|
||||||
msgstr "Dokument-ID"
|
msgstr "Dokument-ID"
|
||||||
|
|
||||||
@ -1237,7 +1243,7 @@ msgstr "Dokument-ID"
|
|||||||
msgid "Document inbox"
|
msgid "Document inbox"
|
||||||
msgstr "Dokumenten-Posteingang"
|
msgstr "Dokumenten-Posteingang"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:179
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:178
|
||||||
msgid "Document Limit Exceeded!"
|
msgid "Document Limit Exceeded!"
|
||||||
msgstr "Dokumentenlimit überschritten!"
|
msgstr "Dokumentenlimit überschritten!"
|
||||||
|
|
||||||
@ -1277,11 +1283,11 @@ msgstr "Dokument signiert"
|
|||||||
msgid "Document signing process will be cancelled"
|
msgid "Document signing process will be cancelled"
|
||||||
msgstr "Der Dokumentenunterzeichnungsprozess wird abgebrochen"
|
msgstr "Der Dokumentenunterzeichnungsprozess wird abgebrochen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:78
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:75
|
||||||
msgid "Document status"
|
msgid "Document status"
|
||||||
msgstr "Dokumentenstatus"
|
msgstr "Dokumentenstatus"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:70
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:67
|
||||||
msgid "Document title"
|
msgid "Document title"
|
||||||
msgstr "Dokumenttitel"
|
msgstr "Dokumenttitel"
|
||||||
|
|
||||||
@ -1378,10 +1384,10 @@ msgstr "Duplizieren"
|
|||||||
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
|
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:154
|
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:154
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
|
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:99
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:62
|
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:62
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:77
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:77
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:104
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:100
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Bearbeiten"
|
msgstr "Bearbeiten"
|
||||||
|
|
||||||
@ -1453,9 +1459,9 @@ msgstr "Direktlinksignierung aktivieren"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
|
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
|
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:75
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:80
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:79
|
||||||
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:166
|
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:166
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Aktiviert"
|
msgstr "Aktiviert"
|
||||||
@ -1535,16 +1541,22 @@ msgstr "Zeitüberschreitung überschritten"
|
|||||||
msgid "Expired"
|
msgid "Expired"
|
||||||
msgstr "Abgelaufen"
|
msgstr "Abgelaufen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:73
|
#~ msgid "Expires on"
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:106
|
#~ msgstr ""
|
||||||
msgid "Expires on"
|
|
||||||
msgstr "Läuft ab am"
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:71
|
||||||
|
msgid "Expires on {0}"
|
||||||
|
msgstr ">>>>>>> 4ca18b99 (fix: refactor dates)"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
|
||||||
#~ msgid "Expires on <0/>"
|
#~ msgid "Expires on <0/>"
|
||||||
#~ msgstr "Expires on <0/>"
|
#~ msgstr "Expires on <0/>"
|
||||||
|
|
||||||
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:107
|
||||||
|
msgid "Expires on{0}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:42
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:42
|
||||||
msgid "Failed to reseal document"
|
msgid "Failed to reseal document"
|
||||||
msgstr "Dokument konnte nicht erneut versiegelt werden"
|
msgstr "Dokument konnte nicht erneut versiegelt werden"
|
||||||
@ -1638,7 +1650,7 @@ msgstr "Hey, ich bin Timur"
|
|||||||
msgid "Hide"
|
msgid "Hide"
|
||||||
msgstr "Ausblenden"
|
msgstr "Ausblenden"
|
||||||
|
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:109
|
#: apps/web/src/components/document/document-history-sheet.tsx:111
|
||||||
msgid "Hide additional information"
|
msgid "Hide additional information"
|
||||||
msgstr "Zusätzliche Informationen ausblenden"
|
msgstr "Zusätzliche Informationen ausblenden"
|
||||||
|
|
||||||
@ -1675,7 +1687,7 @@ msgstr "Posteingang"
|
|||||||
msgid "Inbox documents"
|
msgid "Inbox documents"
|
||||||
msgstr "Posteingang Dokumente"
|
msgstr "Posteingang Dokumente"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:62
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:53
|
||||||
msgid "Information"
|
msgid "Information"
|
||||||
msgstr "Information"
|
msgstr "Information"
|
||||||
|
|
||||||
@ -1713,11 +1725,11 @@ msgstr "Einladung akzeptiert!"
|
|||||||
msgid "Invitation declined"
|
msgid "Invitation declined"
|
||||||
msgstr "Einladung abgelehnt"
|
msgstr "Einladung abgelehnt"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:82
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:80
|
||||||
msgid "Invitation has been deleted"
|
msgid "Invitation has been deleted"
|
||||||
msgstr "Einladung wurde gelöscht"
|
msgstr "Einladung wurde gelöscht"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:65
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:63
|
||||||
msgid "Invitation has been resent"
|
msgid "Invitation has been resent"
|
||||||
msgstr "Einladung wurde erneut gesendet"
|
msgstr "Einladung wurde erneut gesendet"
|
||||||
|
|
||||||
@ -1737,7 +1749,7 @@ msgstr "Mitglieder einladen"
|
|||||||
msgid "Invite team members"
|
msgid "Invite team members"
|
||||||
msgstr "Teammitglieder einladen"
|
msgstr "Teammitglieder einladen"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:130
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:128
|
||||||
msgid "Invited At"
|
msgid "Invited At"
|
||||||
msgstr "Eingeladen am"
|
msgstr "Eingeladen am"
|
||||||
|
|
||||||
@ -1773,15 +1785,15 @@ msgstr "Die letzten 30 Tage"
|
|||||||
msgid "Last 7 days"
|
msgid "Last 7 days"
|
||||||
msgstr "Die letzten 7 Tage"
|
msgstr "Die letzten 7 Tage"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:52
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr "Zuletzt geändert"
|
msgstr "Zuletzt geändert"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:94
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:91
|
||||||
msgid "Last updated"
|
msgid "Last updated"
|
||||||
msgstr "Zuletzt aktualisiert"
|
msgstr "Zuletzt aktualisiert"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:53
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:52
|
||||||
msgid "Last updated at"
|
msgid "Last updated at"
|
||||||
msgstr "Zuletzt aktualisiert am"
|
msgstr "Zuletzt aktualisiert am"
|
||||||
|
|
||||||
@ -1790,7 +1802,7 @@ msgid "Last used"
|
|||||||
msgstr "Zuletzt verwendet"
|
msgstr "Zuletzt verwendet"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
|
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:119
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:117
|
||||||
msgid "Leave"
|
msgid "Leave"
|
||||||
msgstr "Verlassen"
|
msgstr "Verlassen"
|
||||||
|
|
||||||
@ -1810,8 +1822,8 @@ msgstr "Möchten Sie Ihr eigenes öffentliches Profil mit Vereinbarungen haben?"
|
|||||||
msgid "Link template"
|
msgid "Link template"
|
||||||
msgstr "Vorlage verlinken"
|
msgstr "Vorlage verlinken"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:80
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:79
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:85
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:84
|
||||||
msgid "Listening to {0}"
|
msgid "Listening to {0}"
|
||||||
msgstr "Anhören von {0}"
|
msgstr "Anhören von {0}"
|
||||||
|
|
||||||
@ -1844,7 +1856,7 @@ msgstr "Wird geladen..."
|
|||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Anmelden"
|
msgstr "Anmelden"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:103
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:101
|
||||||
msgid "Manage"
|
msgid "Manage"
|
||||||
msgstr "Verwalten"
|
msgstr "Verwalten"
|
||||||
|
|
||||||
@ -1856,7 +1868,7 @@ msgstr "Verwalten Sie das Profil von {0}"
|
|||||||
msgid "Manage all teams you are currently associated with."
|
msgid "Manage all teams you are currently associated with."
|
||||||
msgstr "Verwalten Sie alle Teams, mit denen Sie derzeit verbunden sind."
|
msgstr "Verwalten Sie alle Teams, mit denen Sie derzeit verbunden sind."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:343
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
|
||||||
msgid "Manage details for this public template"
|
msgid "Manage details for this public template"
|
||||||
msgstr "Details für diese öffentliche Vorlage verwalten"
|
msgstr "Details für diese öffentliche Vorlage verwalten"
|
||||||
|
|
||||||
@ -1924,8 +1936,8 @@ msgstr "MAU (erstellt Dokument)"
|
|||||||
msgid "MAU (had document completed)"
|
msgid "MAU (had document completed)"
|
||||||
msgstr "MAU (hat Dokument abgeschlossen)"
|
msgstr "MAU (hat Dokument abgeschlossen)"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:92
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:90
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:115
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:113
|
||||||
msgid "Member Since"
|
msgid "Member Since"
|
||||||
msgstr "Mitglied seit"
|
msgstr "Mitglied seit"
|
||||||
|
|
||||||
@ -2050,7 +2062,7 @@ msgstr "Keine Ergebnisse gefunden."
|
|||||||
msgid "No token provided"
|
msgid "No token provided"
|
||||||
msgstr "Kein Token bereitgestellt"
|
msgstr "Kein Token bereitgestellt"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:286
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:284
|
||||||
msgid "No valid direct templates found"
|
msgid "No valid direct templates found"
|
||||||
msgstr "Keine gültigen direkten Vorlagen gefunden"
|
msgstr "Keine gültigen direkten Vorlagen gefunden"
|
||||||
|
|
||||||
@ -2080,16 +2092,16 @@ msgstr "Nichts zu tun"
|
|||||||
msgid "On this page, you can create a new webhook."
|
msgid "On this page, you can create a new webhook."
|
||||||
msgstr "Auf dieser Seite können Sie einen neuen Webhook erstellen."
|
msgstr "Auf dieser Seite können Sie einen neuen Webhook erstellen."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:27
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:26
|
||||||
msgid "On this page, you can create new API tokens and manage the existing ones. <0/>Also see our <1>Documentation</1>."
|
msgid "On this page, you can create new API tokens and manage the existing ones. <0/>Also see our <1>Documentation</1>."
|
||||||
msgstr "Auf dieser Seite können Sie neue API-Tokens erstellen und die vorhandenen verwalten. <0/>Siehe auch unsere <1>Dokumentation</1>."
|
msgstr "Auf dieser Seite können Sie neue API-Tokens erstellen und die vorhandenen verwalten. <0/>Siehe auch unsere <1>Dokumentation</1>."
|
||||||
|
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:61
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:60
|
||||||
msgid "On this page, you can create new API tokens and manage the existing ones. <0/>You can view our swagger docs <1>here</1>"
|
msgid "On this page, you can create new API tokens and manage the existing ones. <0/>You can view our swagger docs <1>here</1>"
|
||||||
msgstr "Auf dieser Seite können Sie neue API-Tokens erstellen und die vorhandenen verwalten. <0/>Sie können unsere Swagger-Dokumentation <1>hier</1> einsehen"
|
msgstr "Auf dieser Seite können Sie neue API-Tokens erstellen und die vorhandenen verwalten. <0/>Sie können unsere Swagger-Dokumentation <1>hier</1> einsehen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:30
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:29
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:35
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:34
|
||||||
msgid "On this page, you can create new Webhooks and manage the existing ones."
|
msgid "On this page, you can create new Webhooks and manage the existing ones."
|
||||||
msgstr "Auf dieser Seite können Sie neue Webhooks erstellen und die vorhandenen verwalten."
|
msgstr "Auf dieser Seite können Sie neue Webhooks erstellen und die vorhandenen verwalten."
|
||||||
|
|
||||||
@ -2133,7 +2145,7 @@ msgstr "Oder fahren Sie fort mit"
|
|||||||
msgid "Otherwise, the document will be created as a draft."
|
msgid "Otherwise, the document will be created as a draft."
|
||||||
msgstr "Andernfalls wird das Dokument als Entwurf erstellt."
|
msgstr "Andernfalls wird das Dokument als Entwurf erstellt."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:87
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
|
||||||
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:76
|
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:76
|
||||||
msgid "Owner"
|
msgid "Owner"
|
||||||
msgstr "Besitzer"
|
msgstr "Besitzer"
|
||||||
@ -2325,12 +2337,12 @@ msgstr "Einstellungen"
|
|||||||
msgid "Preview and configure template."
|
msgid "Preview and configure template."
|
||||||
msgstr "Vorschau und Vorlagen konfigurieren."
|
msgstr "Vorschau und Vorlagen konfigurieren."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
|
||||||
#: apps/web/src/components/formatter/template-type.tsx:22
|
#: apps/web/src/components/formatter/template-type.tsx:22
|
||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "Privat"
|
msgstr "Privat"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:116
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:115
|
||||||
msgid "Private templates can only be modified and viewed by you."
|
msgid "Private templates can only be modified and viewed by you."
|
||||||
msgstr "Private Vorlagen können nur von Ihnen bearbeitet und angezeigt werden."
|
msgstr "Private Vorlagen können nur von Ihnen bearbeitet und angezeigt werden."
|
||||||
|
|
||||||
@ -2354,7 +2366,7 @@ msgstr "Profil ist derzeit <0>sichtbar</0>."
|
|||||||
msgid "Profile updated"
|
msgid "Profile updated"
|
||||||
msgstr "Profil aktualisiert"
|
msgstr "Profil aktualisiert"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:79
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:78
|
||||||
#: apps/web/src/components/formatter/template-type.tsx:27
|
#: apps/web/src/components/formatter/template-type.tsx:27
|
||||||
msgid "Public"
|
msgid "Public"
|
||||||
msgstr "Öffentlich"
|
msgstr "Öffentlich"
|
||||||
@ -2375,7 +2387,7 @@ msgstr "Öffentlicher Profil-URL"
|
|||||||
msgid "Public profile username"
|
msgid "Public profile username"
|
||||||
msgstr "Öffentlicher Profil-Benutzername"
|
msgstr "Öffentlicher Profil-Benutzername"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:83
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:82
|
||||||
msgid "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
|
msgid "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
|
||||||
msgstr "Öffentliche Vorlagen sind mit Ihrem öffentlichen Profil verbunden. Änderungen an öffentlichen Vorlagen erscheinen auch in Ihrem öffentlichen Profil."
|
msgstr "Öffentliche Vorlagen sind mit Ihrem öffentlichen Profil verbunden. Änderungen an öffentlichen Vorlagen erscheinen auch in Ihrem öffentlichen Profil."
|
||||||
|
|
||||||
@ -2396,7 +2408,7 @@ msgstr "Eine erneute Authentifizierung ist erforderlich, um dieses Feld zu unter
|
|||||||
msgid "Recent activity"
|
msgid "Recent activity"
|
||||||
msgstr "Aktuelle Aktivitäten"
|
msgstr "Aktuelle Aktivitäten"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
|
||||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
|
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
|
||||||
msgid "Recipient"
|
msgid "Recipient"
|
||||||
msgstr "Empfänger"
|
msgstr "Empfänger"
|
||||||
@ -2405,7 +2417,7 @@ msgstr "Empfänger"
|
|||||||
msgid "Recipient updated"
|
msgid "Recipient updated"
|
||||||
msgstr "Empfänger aktualisiert"
|
msgstr "Empfänger aktualisiert"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:68
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:34
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:34
|
||||||
msgid "Recipients"
|
msgid "Recipients"
|
||||||
msgstr "Empfänger"
|
msgstr "Empfänger"
|
||||||
@ -2443,8 +2455,8 @@ msgstr "Haben Sie Ihr Passwort vergessen? <0>Einloggen</0>"
|
|||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
|
||||||
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
|
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:168
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:166
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:169
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:167
|
||||||
#: apps/web/src/components/forms/avatar-image.tsx:169
|
#: apps/web/src/components/forms/avatar-image.tsx:169
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Entfernen"
|
msgstr "Entfernen"
|
||||||
@ -2453,7 +2465,7 @@ msgstr "Entfernen"
|
|||||||
msgid "Remove team email"
|
msgid "Remove team email"
|
||||||
msgstr "Team-E-Mail entfernen"
|
msgstr "Team-E-Mail entfernen"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:166
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:164
|
||||||
msgid "Remove team member"
|
msgid "Remove team member"
|
||||||
msgstr "Teammitglied entfernen"
|
msgstr "Teammitglied entfernen"
|
||||||
|
|
||||||
@ -2471,7 +2483,7 @@ msgid "Reseal document"
|
|||||||
msgstr "Dokument wieder versiegeln"
|
msgstr "Dokument wieder versiegeln"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
|
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:156
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:154
|
||||||
msgid "Resend"
|
msgid "Resend"
|
||||||
msgstr "Erneut senden"
|
msgstr "Erneut senden"
|
||||||
|
|
||||||
@ -2545,9 +2557,9 @@ msgstr "Zugriff widerrufen"
|
|||||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
|
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
|
||||||
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
|
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
|
||||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
|
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:82
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:125
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:123
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:105
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Rolle"
|
msgstr "Rolle"
|
||||||
|
|
||||||
@ -2569,7 +2581,7 @@ msgstr "Speichern"
|
|||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Suchen"
|
msgstr "Suchen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:141
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:140
|
||||||
msgid "Search by document title"
|
msgid "Search by document title"
|
||||||
msgstr "Nach Dokumenttitel suchen"
|
msgstr "Nach Dokumenttitel suchen"
|
||||||
|
|
||||||
@ -2609,11 +2621,11 @@ msgstr "Wählen Sie ein Team aus, um dieses Dokument dorthin zu verschieben. Die
|
|||||||
msgid "Select a team to move this template to. This action cannot be undone."
|
msgid "Select a team to move this template to. This action cannot be undone."
|
||||||
msgstr "Wählen Sie ein Team aus, um diese Vorlage dorthin zu verschieben. Diese Aktion kann nicht rückgängig gemacht werden."
|
msgstr "Wählen Sie ein Team aus, um diese Vorlage dorthin zu verschieben. Diese Aktion kann nicht rückgängig gemacht werden."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:263
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:261
|
||||||
msgid "Select a template you'd like to display on your public profile"
|
msgid "Select a template you'd like to display on your public profile"
|
||||||
msgstr "Wählen Sie eine Vorlage aus, die Sie in Ihrem öffentlichen Profil anzeigen möchten"
|
msgstr "Wählen Sie eine Vorlage aus, die Sie in Ihrem öffentlichen Profil anzeigen möchten"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:259
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:257
|
||||||
msgid "Select a template you'd like to display on your team's public profile"
|
msgid "Select a template you'd like to display on your team's public profile"
|
||||||
msgstr "Wählen Sie eine Vorlage aus, die Sie im öffentlichen Profil Ihres Teams anzeigen möchten"
|
msgstr "Wählen Sie eine Vorlage aus, die Sie im öffentlichen Profil Ihres Teams anzeigen möchten"
|
||||||
|
|
||||||
@ -2633,7 +2645,7 @@ msgstr "Dokument senden"
|
|||||||
msgid "Send reminder"
|
msgid "Send reminder"
|
||||||
msgstr "Erinnerung senden"
|
msgstr "Erinnerung senden"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:65
|
||||||
msgid "Sender"
|
msgid "Sender"
|
||||||
msgstr "Absender"
|
msgstr "Absender"
|
||||||
|
|
||||||
@ -2678,7 +2690,7 @@ msgstr "Signaturkarte teilen"
|
|||||||
msgid "Show"
|
msgid "Show"
|
||||||
msgstr "Anzeigen"
|
msgstr "Anzeigen"
|
||||||
|
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:111
|
#: apps/web/src/components/document/document-history-sheet.tsx:113
|
||||||
msgid "Show additional information"
|
msgid "Show additional information"
|
||||||
msgstr "Zusätzliche Informationen anzeigen"
|
msgstr "Zusätzliche Informationen anzeigen"
|
||||||
|
|
||||||
@ -2847,8 +2859,8 @@ msgstr "Website Einstellungen"
|
|||||||
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
|
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
|
||||||
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
|
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:70
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:68
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:87
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:85
|
||||||
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
|
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
|
||||||
msgid "Something went wrong"
|
msgid "Something went wrong"
|
||||||
msgstr "Etwas ist schiefgelaufen"
|
msgstr "Etwas ist schiefgelaufen"
|
||||||
@ -2890,9 +2902,9 @@ msgstr "Entschuldigung, wir konnten das Zertifikat nicht herunterladen. Bitte ve
|
|||||||
msgid "Stats"
|
msgid "Stats"
|
||||||
msgstr "Statistiken"
|
msgstr "Statistiken"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:82
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
|
||||||
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
|
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:83
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
|
||||||
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
|
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Status"
|
msgstr "Status"
|
||||||
@ -2933,11 +2945,11 @@ msgstr "Abonnements"
|
|||||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
|
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
|
||||||
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68
|
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:64
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:81
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79
|
||||||
#: apps/web/src/components/forms/public-profile-form.tsx:80
|
#: apps/web/src/components/forms/public-profile-form.tsx:80
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:135
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:172
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:170
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "Erfolg"
|
msgstr "Erfolg"
|
||||||
|
|
||||||
@ -2949,8 +2961,8 @@ msgstr "Passkey erfolgreich erstellt"
|
|||||||
msgid "System Theme"
|
msgid "System Theme"
|
||||||
msgstr "Systemthema"
|
msgstr "Systemthema"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:67
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:65
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:66
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:64
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr "Team"
|
msgstr "Team"
|
||||||
|
|
||||||
@ -2996,8 +3008,8 @@ msgstr "Teameinladung"
|
|||||||
msgid "Team invitations have been sent."
|
msgid "Team invitations have been sent."
|
||||||
msgstr "Teameinladungen wurden gesendet."
|
msgstr "Teameinladungen wurden gesendet."
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:111
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:109
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:88
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:86
|
||||||
msgid "Team Member"
|
msgid "Team Member"
|
||||||
msgstr "Teammitglied"
|
msgstr "Teammitglied"
|
||||||
|
|
||||||
@ -3006,11 +3018,11 @@ msgstr "Teammitglied"
|
|||||||
msgid "Team Name"
|
msgid "Team Name"
|
||||||
msgstr "Teamname"
|
msgstr "Teamname"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
|
||||||
msgid "Team Only"
|
msgid "Team Only"
|
||||||
msgstr "Nur Team"
|
msgstr "Nur Team"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:111
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:110
|
||||||
msgid "Team only templates are not linked anywhere and are visible only to your team."
|
msgid "Team only templates are not linked anywhere and are visible only to your team."
|
||||||
msgstr "Nur Teamvorlagen sind nirgendwo verlinkt und nur für Ihr Team sichtbar."
|
msgstr "Nur Teamvorlagen sind nirgendwo verlinkt und nur für Ihr Team sichtbar."
|
||||||
|
|
||||||
@ -3068,7 +3080,7 @@ msgid "Teams restricted"
|
|||||||
msgstr "Teams restricted"
|
msgstr "Teams restricted"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
|
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:273
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Template"
|
msgstr "Template"
|
||||||
|
|
||||||
@ -3084,11 +3096,11 @@ msgstr "Template document uploaded"
|
|||||||
msgid "Template duplicated"
|
msgid "Template duplicated"
|
||||||
msgstr "Template duplicated"
|
msgstr "Template duplicated"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:136
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:134
|
||||||
msgid "Template has been removed from your public profile."
|
msgid "Template has been removed from your public profile."
|
||||||
msgstr "Template has been removed from your public profile."
|
msgstr "Template has been removed from your public profile."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:173
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:171
|
||||||
msgid "Template has been updated."
|
msgid "Template has been updated."
|
||||||
msgstr "Template has been updated."
|
msgstr "Template has been updated."
|
||||||
|
|
||||||
@ -3172,11 +3184,11 @@ msgstr "The profile link has been copied to your clipboard"
|
|||||||
msgid "The profile you are looking for could not be found."
|
msgid "The profile you are looking for could not be found."
|
||||||
msgstr "The profile you are looking for could not be found."
|
msgstr "The profile you are looking for could not be found."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:382
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:380
|
||||||
msgid "The public description that will be displayed with this template"
|
msgid "The public description that will be displayed with this template"
|
||||||
msgstr "The public description that will be displayed with this template"
|
msgstr "The public description that will be displayed with this template"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:360
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:358
|
||||||
msgid "The public name for your template"
|
msgid "The public name for your template"
|
||||||
msgstr "The public name for your template"
|
msgstr "The public name for your template"
|
||||||
|
|
||||||
@ -3212,7 +3224,7 @@ msgstr "The team you are looking for may have been removed, renamed or may have
|
|||||||
msgid "The template has been successfully moved to the selected team."
|
msgid "The template has been successfully moved to the selected team."
|
||||||
msgstr "The template has been successfully moved to the selected team."
|
msgstr "The template has been successfully moved to the selected team."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:445
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:443
|
||||||
msgid "The template will be removed from your profile"
|
msgid "The template will be removed from your profile"
|
||||||
msgstr "The template will be removed from your profile"
|
msgstr "The template will be removed from your profile"
|
||||||
|
|
||||||
@ -3354,17 +3366,17 @@ msgstr "This username has already been taken"
|
|||||||
msgid "This username is already taken"
|
msgid "This username is already taken"
|
||||||
msgstr "This username is already taken"
|
msgstr "This username is already taken"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:79
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:77
|
||||||
msgid "Time"
|
msgid "Time"
|
||||||
msgstr "Time"
|
msgstr "Time"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:100
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:97
|
||||||
msgid "Time zone"
|
msgid "Time zone"
|
||||||
msgstr "Time zone"
|
msgstr "Time zone"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:68
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:64
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:60
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:62
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Title"
|
msgstr "Title"
|
||||||
|
|
||||||
@ -3428,8 +3440,8 @@ msgstr "Token created"
|
|||||||
msgid "Token deleted"
|
msgid "Token deleted"
|
||||||
msgstr "Token deleted"
|
msgstr "Token deleted"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:78
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:111
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:114
|
||||||
msgid "Token doesn't have an expiration date"
|
msgid "Token doesn't have an expiration date"
|
||||||
msgstr "Token doesn't have an expiration date"
|
msgstr "Token doesn't have an expiration date"
|
||||||
|
|
||||||
@ -3502,7 +3514,7 @@ msgid "Two-factor authentication has been disabled for your account. You will no
|
|||||||
msgstr "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
|
msgstr "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:68
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:67
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Type"
|
msgstr "Type"
|
||||||
|
|
||||||
@ -3534,7 +3546,7 @@ msgstr "Unable to create direct template access. Please try again later."
|
|||||||
msgid "Unable to decline this team invitation at this time."
|
msgid "Unable to decline this team invitation at this time."
|
||||||
msgstr "Unable to decline this team invitation at this time."
|
msgstr "Unable to decline this team invitation at this time."
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:88
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:86
|
||||||
msgid "Unable to delete invitation. Please try again."
|
msgid "Unable to delete invitation. Please try again."
|
||||||
msgstr "Unable to delete invitation. Please try again."
|
msgstr "Unable to delete invitation. Please try again."
|
||||||
|
|
||||||
@ -3551,7 +3563,7 @@ msgid "Unable to join this team at this time."
|
|||||||
msgstr "Unable to join this team at this time."
|
msgstr "Unable to join this team at this time."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:72
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:72
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:125
|
#: apps/web/src/components/document/document-history-sheet.tsx:127
|
||||||
msgid "Unable to load document history"
|
msgid "Unable to load document history"
|
||||||
msgstr "Unable to load document history"
|
msgstr "Unable to load document history"
|
||||||
|
|
||||||
@ -3567,7 +3579,7 @@ msgstr "Unable to remove email verification at this time. Please try again."
|
|||||||
msgid "Unable to remove team email at this time. Please try again."
|
msgid "Unable to remove team email at this time. Please try again."
|
||||||
msgstr "Unable to remove team email at this time. Please try again."
|
msgstr "Unable to remove team email at this time. Please try again."
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:71
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:69
|
||||||
msgid "Unable to resend invitation. Please try again."
|
msgid "Unable to resend invitation. Please try again."
|
||||||
msgstr "Unable to resend invitation. Please try again."
|
msgstr "Unable to resend invitation. Please try again."
|
||||||
|
|
||||||
@ -3611,7 +3623,7 @@ msgstr "Unpaid"
|
|||||||
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
|
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
|
||||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
|
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
|
||||||
#: apps/web/src/components/forms/public-profile-form.tsx:279
|
#: apps/web/src/components/forms/public-profile-form.tsx:279
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:430
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:428
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Update"
|
msgstr "Update"
|
||||||
|
|
||||||
@ -3635,7 +3647,7 @@ msgstr "Update profile"
|
|||||||
msgid "Update Recipient"
|
msgid "Update Recipient"
|
||||||
msgstr "Update Recipient"
|
msgstr "Update Recipient"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:148
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
|
||||||
msgid "Update role"
|
msgid "Update role"
|
||||||
msgstr "Update role"
|
msgstr "Update role"
|
||||||
|
|
||||||
@ -3674,7 +3686,7 @@ msgstr "Profil wird aktualisiert..."
|
|||||||
msgid "Upload Avatar"
|
msgid "Upload Avatar"
|
||||||
msgstr "Avatar hochladen"
|
msgstr "Avatar hochladen"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:44
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:31
|
||||||
msgid "Uploaded by"
|
msgid "Uploaded by"
|
||||||
msgstr "Hochgeladen von"
|
msgstr "Hochgeladen von"
|
||||||
|
|
||||||
@ -3704,7 +3716,7 @@ msgstr "Backup-Code verwenden"
|
|||||||
msgid "Use Template"
|
msgid "Use Template"
|
||||||
msgstr "Vorlage verwenden"
|
msgstr "Vorlage verwenden"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:84
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:82
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Benutzer"
|
msgstr "Benutzer"
|
||||||
|
|
||||||
@ -3886,7 +3898,7 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
|
|||||||
msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
|
msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
|
||||||
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, dieses Team zu verlassen. Bitte versuchen Sie es später erneut."
|
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, dieses Team zu verlassen. Bitte versuchen Sie es später erneut."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:145
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
|
||||||
msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
|
msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
|
||||||
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, diese Vorlage aus Ihrem Profil zu entfernen. Bitte versuchen Sie es später erneut."
|
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, diese Vorlage aus Ihrem Profil zu entfernen. Bitte versuchen Sie es später erneut."
|
||||||
|
|
||||||
@ -3942,7 +3954,7 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
|
|||||||
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
|
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
|
||||||
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, das Banner zu aktualisieren. Bitte versuchen Sie es später erneut."
|
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, das Banner zu aktualisieren. Bitte versuchen Sie es später erneut."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:182
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
|
||||||
msgid "We encountered an unknown error while attempting to update the template. Please try again later."
|
msgid "We encountered an unknown error while attempting to update the template. Please try again later."
|
||||||
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, die Vorlage zu aktualisieren. Bitte versuchen Sie es später erneut."
|
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, die Vorlage zu aktualisieren. Bitte versuchen Sie es später erneut."
|
||||||
|
|
||||||
@ -4041,8 +4053,8 @@ msgstr "Webhook aktualisiert"
|
|||||||
msgid "Webhook URL"
|
msgid "Webhook URL"
|
||||||
msgstr "Webhook-URL"
|
msgstr "Webhook-URL"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:29
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:28
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:34
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:33
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:103
|
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:103
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:106
|
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:106
|
||||||
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:94
|
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:94
|
||||||
@ -4082,7 +4094,7 @@ msgstr "Schreiben Sie über sich selbst"
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Jährlich"
|
msgstr "Jährlich"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:45
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
|
||||||
msgid "You"
|
msgid "You"
|
||||||
msgstr "Sie"
|
msgstr "Sie"
|
||||||
|
|
||||||
@ -4122,7 +4134,7 @@ msgstr "Sie stehen kurz davor, den folgenden Benutzer aus <0>{teamName}</0> zu e
|
|||||||
msgid "You are about to revoke access for team <0>{0}</0> ({1}) to use your email."
|
msgid "You are about to revoke access for team <0>{0}</0> ({1}) to use your email."
|
||||||
msgstr "Sie stehen kurz davor, den Zugriff für das Team <0>{0}</0> ({1}) zu widerrufen."
|
msgstr "Sie stehen kurz davor, den Zugriff für das Team <0>{0}</0> ({1}) zu widerrufen."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80
|
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:78
|
||||||
msgid "You are currently on the <0>Free Plan</0>."
|
msgid "You are currently on the <0>Free Plan</0>."
|
||||||
msgstr "Sie befinden sich derzeit im <0>kostenlosen Plan</0>."
|
msgstr "Sie befinden sich derzeit im <0>kostenlosen Plan</0>."
|
||||||
|
|
||||||
@ -4203,8 +4215,8 @@ msgstr "Sie wurden von <0>{0}</0> eingeladen, ihrem Team beizutreten."
|
|||||||
msgid "You have declined the invitation from <0>{0}</0> to join their team."
|
msgid "You have declined the invitation from <0>{0}</0> to join their team."
|
||||||
msgstr "Sie haben die Einladung von <0>{0}</0> abgelehnt, ihrem Team beizutreten."
|
msgstr "Sie haben die Einladung von <0>{0}</0> abgelehnt, ihrem Team beizutreten."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:45
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:44
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:50
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:49
|
||||||
msgid "You have no webhooks yet. Your webhooks will be shown here once you create them."
|
msgid "You have no webhooks yet. Your webhooks will be shown here once you create them."
|
||||||
msgstr "Sie haben noch keine Webhooks. Ihre Webhooks werden hier angezeigt, sobald Sie sie erstellt haben."
|
msgstr "Sie haben noch keine Webhooks. Ihre Webhooks werden hier angezeigt, sobald Sie sie erstellt haben."
|
||||||
|
|
||||||
@ -4224,7 +4236,7 @@ msgstr "Sie haben das maximale Limit von {0} direkten Vorlagen erreicht. <0>Upgr
|
|||||||
msgid "You have reached your document limit."
|
msgid "You have reached your document limit."
|
||||||
msgstr "Sie haben Ihr Dokumentenlimit erreicht."
|
msgstr "Sie haben Ihr Dokumentenlimit erreicht."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:182
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:181
|
||||||
msgid "You have reached your document limit. <0>Upgrade your account to continue!</0>"
|
msgid "You have reached your document limit. <0>Upgrade your account to continue!</0>"
|
||||||
msgstr "Sie haben Ihr Dokumentenlimit erreicht. <0>Upgrade your account to continue!</0>"
|
msgstr "Sie haben Ihr Dokumentenlimit erreicht. <0>Upgrade your account to continue!</0>"
|
||||||
|
|
||||||
@ -4312,11 +4324,11 @@ msgstr "Ihr Avatar wurde erfolgreich aktualisiert."
|
|||||||
msgid "Your banner has been updated successfully."
|
msgid "Your banner has been updated successfully."
|
||||||
msgstr "Ihr Banner wurde erfolgreich aktualisiert."
|
msgstr "Ihr Banner wurde erfolgreich aktualisiert."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:121
|
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:119
|
||||||
msgid "Your current plan is past due. Please update your payment information."
|
msgid "Your current plan is past due. Please update your payment information."
|
||||||
msgstr "Ihr aktueller Plan ist überfällig. Bitte aktualisieren Sie Ihre Zahlungsinformationen."
|
msgstr "Ihr aktueller Plan ist überfällig. Bitte aktualisieren Sie Ihre Zahlungsinformationen."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:253
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
|
||||||
msgid "Your direct signing templates"
|
msgid "Your direct signing templates"
|
||||||
msgstr "Ihre direkten Unterzeichnungsvorlagen"
|
msgstr "Ihre direkten Unterzeichnungsvorlagen"
|
||||||
|
|
||||||
@ -4360,8 +4372,8 @@ msgstr "Ihre E-Mail wurde erfolgreich bestätigt! Sie können jetzt alle Funktio
|
|||||||
msgid "Your email is currently being used by team <0>{0}</0> ({1})."
|
msgid "Your email is currently being used by team <0>{0}</0> ({1})."
|
||||||
msgstr "Ihre E-Mail wird derzeit von Team <0>{0}</0> ({1}) verwendet."
|
msgstr "Ihre E-Mail wird derzeit von Team <0>{0}</0> ({1}) verwendet."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:48
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:47
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:81
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:80
|
||||||
msgid "Your existing tokens"
|
msgid "Your existing tokens"
|
||||||
msgstr "Ihre vorhandenen Tokens"
|
msgstr "Ihre vorhandenen Tokens"
|
||||||
|
|
||||||
@ -4435,7 +4447,7 @@ msgstr "Ihr Token ist abgelaufen!"
|
|||||||
msgid "Your token was created successfully! Make sure to copy it because you won't be able to see it again!"
|
msgid "Your token was created successfully! Make sure to copy it because you won't be able to see it again!"
|
||||||
msgstr "Ihr Token wurde erfolgreich erstellt! Stellen Sie sicher, dass Sie es kopieren, da Sie es später nicht mehr sehen können!"
|
msgstr "Ihr Token wurde erfolgreich erstellt! Stellen Sie sicher, dass Sie es kopieren, da Sie es später nicht mehr sehen können!"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:54
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:53
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:87
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
|
||||||
msgid "Your tokens will be shown here once you create them."
|
msgid "Your tokens will be shown here once you create them."
|
||||||
msgstr "Ihre Tokens werden hier angezeigt, sobald Sie sie erstellt haben."
|
msgstr "Ihre Tokens werden hier angezeigt, sobald Sie sie erstellt haben."
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -38,7 +38,7 @@ msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
|
|||||||
msgstr "{0, plural, one {(1 character over)} other {(# characters over)}}"
|
msgstr "{0, plural, one {(1 character over)} other {(# characters over)}}"
|
||||||
|
|
||||||
#: apps/web/src/components/forms/public-profile-form.tsx:237
|
#: apps/web/src/components/forms/public-profile-form.tsx:237
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:397
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:395
|
||||||
msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
|
msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
|
||||||
msgstr "{0, plural, one {# character over the limit} other {# characters over the limit}}"
|
msgstr "{0, plural, one {# character over the limit} other {# characters over the limit}}"
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ msgstr "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}
|
|||||||
msgid "{0, plural, zero {Select values} other {# selected...}}"
|
msgid "{0, plural, zero {Select values} other {# selected...}}"
|
||||||
msgstr "{0, plural, zero {Select values} other {# selected...}}"
|
msgstr "{0, plural, zero {Select values} other {# selected...}}"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
|
||||||
msgid "{0} direct signing templates"
|
msgid "{0} direct signing templates"
|
||||||
msgstr "{0} direct signing templates"
|
msgstr "{0} direct signing templates"
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ msgid "{numberOfSeats, plural, one {# member} other {# members}}"
|
|||||||
msgstr "{numberOfSeats, plural, one {# member} other {# members}}"
|
msgstr "{numberOfSeats, plural, one {# member} other {# members}}"
|
||||||
|
|
||||||
#: apps/web/src/components/forms/public-profile-form.tsx:231
|
#: apps/web/src/components/forms/public-profile-form.tsx:231
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:391
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
|
||||||
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
|
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
|
||||||
msgstr "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
|
msgstr "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
|
||||||
|
|
||||||
@ -185,19 +185,19 @@ msgid "Account deleted"
|
|||||||
msgstr "Account deleted"
|
msgstr "Account deleted"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:105
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:105
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:106
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:104
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:121
|
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:121
|
||||||
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
|
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:120
|
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:118
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr "Action"
|
msgstr "Action"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:89
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:85
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:141
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:135
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:133
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:144
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:142
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:120
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:118
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:129
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:127
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr "Actions"
|
msgstr "Actions"
|
||||||
|
|
||||||
@ -294,7 +294,7 @@ msgstr "Add the subject and message you wish to send to signers."
|
|||||||
msgid "Adding and removing seats will adjust your invoice accordingly."
|
msgid "Adding and removing seats will adjust your invoice accordingly."
|
||||||
msgstr "Adding and removing seats will adjust your invoice accordingly."
|
msgstr "Adding and removing seats will adjust your invoice accordingly."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:61
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:59
|
||||||
msgid "Admin Actions"
|
msgid "Admin Actions"
|
||||||
msgstr "Admin Actions"
|
msgstr "Admin Actions"
|
||||||
|
|
||||||
@ -507,8 +507,8 @@ msgstr "An error occurred while uploading your document."
|
|||||||
#: apps/web/src/components/forms/v2/signup.tsx:160
|
#: apps/web/src/components/forms/v2/signup.tsx:160
|
||||||
#: apps/web/src/components/forms/v2/signup.tsx:183
|
#: apps/web/src/components/forms/v2/signup.tsx:183
|
||||||
#: apps/web/src/components/forms/v2/signup.tsx:197
|
#: apps/web/src/components/forms/v2/signup.tsx:197
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:141
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
|
||||||
msgid "An unknown error occurred"
|
msgid "An unknown error occurred"
|
||||||
msgstr "An unknown error occurred"
|
msgstr "An unknown error occurred"
|
||||||
|
|
||||||
@ -516,9 +516,9 @@ msgstr "An unknown error occurred"
|
|||||||
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
|
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
|
||||||
msgstr "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
|
msgstr "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:23
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:22
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:43
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:42
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:57
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:56
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:90
|
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:90
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:93
|
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:93
|
||||||
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:81
|
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:81
|
||||||
@ -559,7 +559,7 @@ msgstr "Are you sure you wish to delete this team?"
|
|||||||
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
|
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
|
||||||
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
|
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
|
||||||
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
|
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:441
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:439
|
||||||
msgid "Are you sure?"
|
msgid "Are you sure?"
|
||||||
msgstr "Are you sure?"
|
msgstr "Are you sure?"
|
||||||
|
|
||||||
@ -619,7 +619,7 @@ msgstr "Banner Updated"
|
|||||||
msgid "Basic details"
|
msgid "Basic details"
|
||||||
msgstr "Basic details"
|
msgstr "Basic details"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74
|
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:72
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117
|
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120
|
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120
|
||||||
@ -628,7 +628,7 @@ msgstr "Basic details"
|
|||||||
msgid "Billing"
|
msgid "Billing"
|
||||||
msgstr "Billing"
|
msgstr "Billing"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:101
|
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
|
||||||
msgid "Browser"
|
msgid "Browser"
|
||||||
msgstr "Browser"
|
msgstr "Browser"
|
||||||
|
|
||||||
@ -682,7 +682,7 @@ msgstr "By enabling 2FA, you will be required to enter a code from your authenti
|
|||||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
|
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
|
||||||
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
|
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
|
||||||
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
|
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:452
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:450
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancel"
|
msgstr "Cancel"
|
||||||
|
|
||||||
@ -732,7 +732,7 @@ msgstr "Click here to get started"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:78
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:78
|
||||||
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
|
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:131
|
#: apps/web/src/components/document/document-history-sheet.tsx:133
|
||||||
msgid "Click here to retry"
|
msgid "Click here to retry"
|
||||||
msgstr "Click here to retry"
|
msgstr "Click here to retry"
|
||||||
|
|
||||||
@ -759,8 +759,8 @@ msgstr "Click to insert field"
|
|||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
|
||||||
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
|
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
|
||||||
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
|
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:321
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:425
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:423
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Close"
|
msgstr "Close"
|
||||||
|
|
||||||
@ -804,12 +804,12 @@ msgstr "Configure general settings for the document."
|
|||||||
msgid "Configure general settings for the template."
|
msgid "Configure general settings for the template."
|
||||||
msgstr "Configure general settings for the template."
|
msgstr "Configure general settings for the template."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:339
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:337
|
||||||
msgid "Configure template"
|
msgid "Configure template"
|
||||||
msgstr "Configure template"
|
msgstr "Configure template"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:479
|
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:479
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:462
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Confirm"
|
msgstr "Confirm"
|
||||||
|
|
||||||
@ -848,7 +848,7 @@ msgstr "Content"
|
|||||||
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
|
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
|
||||||
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
|
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
|
||||||
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
|
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:330
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:328
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
msgstr "Continue"
|
msgstr "Continue"
|
||||||
|
|
||||||
@ -954,12 +954,12 @@ msgstr "Create your account and start using state-of-the-art document signing."
|
|||||||
msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
|
msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
|
||||||
msgstr "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
|
msgstr "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:63
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:48
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
|
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:57
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:276
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr "Created"
|
msgstr "Created"
|
||||||
|
|
||||||
@ -967,21 +967,29 @@ msgstr "Created"
|
|||||||
msgid "Created At"
|
msgid "Created At"
|
||||||
msgstr "Created At"
|
msgstr "Created At"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:82
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:79
|
||||||
msgid "Created by"
|
msgid "Created by"
|
||||||
msgstr "Created by"
|
msgstr "Created by"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:49
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:48
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:68
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:78
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:101
|
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:80
|
|
||||||
msgid "Created on"
|
msgid "Created on"
|
||||||
msgstr "Created on"
|
msgstr "Created on"
|
||||||
|
|
||||||
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:67
|
||||||
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:88
|
||||||
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:93
|
||||||
|
msgid "Created on {0}"
|
||||||
|
msgstr "Created on {0}"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:89
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:89
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:94
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:94
|
||||||
msgid "Created on <0/>"
|
#~ msgid "Created on <0/>"
|
||||||
msgstr "Created on <0/>"
|
#~ msgstr "Created on <0/>"
|
||||||
|
|
||||||
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
|
||||||
|
msgid "Created on{0}"
|
||||||
|
msgstr "Created on{0}"
|
||||||
|
|
||||||
#: apps/web/src/components/forms/password.tsx:107
|
#: apps/web/src/components/forms/password.tsx:107
|
||||||
msgid "Current Password"
|
msgid "Current Password"
|
||||||
@ -999,12 +1007,12 @@ msgstr "Daily"
|
|||||||
msgid "Dark Mode"
|
msgid "Dark Mode"
|
||||||
msgstr "Dark Mode"
|
msgstr "Dark Mode"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:72
|
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:70
|
||||||
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
|
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:88
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:85
|
||||||
msgid "Date created"
|
msgid "Date created"
|
||||||
msgstr "Date created"
|
msgstr "Date created"
|
||||||
|
|
||||||
@ -1021,12 +1029,12 @@ msgstr "Declined team invitation"
|
|||||||
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
|
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
|
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
|
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:86
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:104
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:91
|
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:91
|
||||||
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
|
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:119
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:122
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:109
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
|
||||||
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
|
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
|
||||||
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:109
|
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:109
|
||||||
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:167
|
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:167
|
||||||
@ -1085,7 +1093,7 @@ msgstr "Delete Webhook"
|
|||||||
msgid "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
|
msgid "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
|
||||||
msgstr "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
|
msgstr "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:42
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr "Deleted"
|
msgstr "Deleted"
|
||||||
|
|
||||||
@ -1097,11 +1105,11 @@ msgstr "Deleting account..."
|
|||||||
#~ msgid "Deleting document"
|
#~ msgid "Deleting document"
|
||||||
#~ msgstr "Deleting document"
|
#~ msgstr "Deleting document"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:77
|
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
|
||||||
msgid "Device"
|
msgid "Device"
|
||||||
msgstr "Device"
|
msgstr "Device"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:92
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:91
|
||||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
|
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
|
||||||
msgid "direct link"
|
msgid "direct link"
|
||||||
msgstr "direct link"
|
msgstr "direct link"
|
||||||
@ -1126,7 +1134,7 @@ msgstr "Direct link signing has been disabled"
|
|||||||
msgid "Direct link signing has been enabled"
|
msgid "Direct link signing has been enabled"
|
||||||
msgstr "Direct link signing has been enabled"
|
msgstr "Direct link signing has been enabled"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:96
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:95
|
||||||
msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
|
msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
|
||||||
msgstr "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
|
msgstr "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
|
||||||
|
|
||||||
@ -1138,7 +1146,7 @@ msgstr "Direct template link deleted"
|
|||||||
msgid "Direct template link usage exceeded ({0}/{1})"
|
msgid "Direct template link usage exceeded ({0}/{1})"
|
||||||
msgstr "Direct template link usage exceeded ({0}/{1})"
|
msgstr "Direct template link usage exceeded ({0}/{1})"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:419
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:417
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Disable"
|
msgstr "Disable"
|
||||||
|
|
||||||
@ -1152,8 +1160,8 @@ msgstr "Disable 2FA"
|
|||||||
msgid "Disable Two Factor Authentication before deleting your account."
|
msgid "Disable Two Factor Authentication before deleting your account."
|
||||||
msgstr "Disable Two Factor Authentication before deleting your account."
|
msgstr "Disable Two Factor Authentication before deleting your account."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:75
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:80
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:79
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Disabled"
|
msgstr "Disabled"
|
||||||
|
|
||||||
@ -1177,7 +1185,7 @@ msgstr "Do you want to duplicate this template?"
|
|||||||
msgid "Documenso will delete <0>all of your documents</0>, along with all of your completed documents, signatures, and all other resources belonging to your Account."
|
msgid "Documenso will delete <0>all of your documents</0>, along with all of your completed documents, signatures, and all other resources belonging to your Account."
|
||||||
msgstr "Documenso will delete <0>all of your documents</0>, along with all of your completed documents, signatures, and all other resources belonging to your Account."
|
msgstr "Documenso will delete <0>all of your documents</0>, along with all of your completed documents, signatures, and all other resources belonging to your Account."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:122
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:119
|
||||||
msgid "Document"
|
msgid "Document"
|
||||||
msgstr "Document"
|
msgstr "Document"
|
||||||
|
|
||||||
@ -1220,11 +1228,11 @@ msgid "Document Duplicated"
|
|||||||
msgstr "Document Duplicated"
|
msgstr "Document Duplicated"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:158
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:158
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:102
|
#: apps/web/src/components/document/document-history-sheet.tsx:104
|
||||||
msgid "Document history"
|
msgid "Document history"
|
||||||
msgstr "Document history"
|
msgstr "Document history"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:74
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
|
||||||
msgid "Document ID"
|
msgid "Document ID"
|
||||||
msgstr "Document ID"
|
msgstr "Document ID"
|
||||||
|
|
||||||
@ -1232,7 +1240,7 @@ msgstr "Document ID"
|
|||||||
msgid "Document inbox"
|
msgid "Document inbox"
|
||||||
msgstr "Document inbox"
|
msgstr "Document inbox"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:179
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:178
|
||||||
msgid "Document Limit Exceeded!"
|
msgid "Document Limit Exceeded!"
|
||||||
msgstr "Document Limit Exceeded!"
|
msgstr "Document Limit Exceeded!"
|
||||||
|
|
||||||
@ -1272,11 +1280,11 @@ msgstr "Document Signed"
|
|||||||
msgid "Document signing process will be cancelled"
|
msgid "Document signing process will be cancelled"
|
||||||
msgstr "Document signing process will be cancelled"
|
msgstr "Document signing process will be cancelled"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:78
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:75
|
||||||
msgid "Document status"
|
msgid "Document status"
|
||||||
msgstr "Document status"
|
msgstr "Document status"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:70
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:67
|
||||||
msgid "Document title"
|
msgid "Document title"
|
||||||
msgstr "Document title"
|
msgstr "Document title"
|
||||||
|
|
||||||
@ -1373,10 +1381,10 @@ msgstr "Duplicate"
|
|||||||
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
|
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:154
|
#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:154
|
||||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
|
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:99
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:62
|
#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:62
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:77
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:77
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:104
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:100
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Edit"
|
msgstr "Edit"
|
||||||
|
|
||||||
@ -1448,9 +1456,9 @@ msgstr "Enable Direct Link Signing"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
|
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
|
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:75
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:80
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:79
|
||||||
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:166
|
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:166
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Enabled"
|
msgstr "Enabled"
|
||||||
@ -1532,14 +1540,22 @@ msgstr "Expired"
|
|||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:73
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:73
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:106
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:106
|
||||||
msgid "Expires on"
|
#~ msgid "Expires on"
|
||||||
msgstr "Expires on"
|
#~ msgstr "Expires on"
|
||||||
|
|
||||||
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:71
|
||||||
|
msgid "Expires on {0}"
|
||||||
|
msgstr "Expires on {0}"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
|
||||||
#~ msgid "Expires on <0/>"
|
#~ msgid "Expires on <0/>"
|
||||||
#~ msgstr "Expires on <0/>"
|
#~ msgstr "Expires on <0/>"
|
||||||
|
|
||||||
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:107
|
||||||
|
msgid "Expires on{0}"
|
||||||
|
msgstr "Expires on{0}"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:42
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:42
|
||||||
msgid "Failed to reseal document"
|
msgid "Failed to reseal document"
|
||||||
msgstr "Failed to reseal document"
|
msgstr "Failed to reseal document"
|
||||||
@ -1633,7 +1649,7 @@ msgstr "Hey I’m Timur"
|
|||||||
msgid "Hide"
|
msgid "Hide"
|
||||||
msgstr "Hide"
|
msgstr "Hide"
|
||||||
|
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:109
|
#: apps/web/src/components/document/document-history-sheet.tsx:111
|
||||||
msgid "Hide additional information"
|
msgid "Hide additional information"
|
||||||
msgstr "Hide additional information"
|
msgstr "Hide additional information"
|
||||||
|
|
||||||
@ -1670,7 +1686,7 @@ msgstr "Inbox"
|
|||||||
msgid "Inbox documents"
|
msgid "Inbox documents"
|
||||||
msgstr "Inbox documents"
|
msgstr "Inbox documents"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:62
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:53
|
||||||
msgid "Information"
|
msgid "Information"
|
||||||
msgstr "Information"
|
msgstr "Information"
|
||||||
|
|
||||||
@ -1708,11 +1724,11 @@ msgstr "Invitation accepted!"
|
|||||||
msgid "Invitation declined"
|
msgid "Invitation declined"
|
||||||
msgstr "Invitation declined"
|
msgstr "Invitation declined"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:82
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:80
|
||||||
msgid "Invitation has been deleted"
|
msgid "Invitation has been deleted"
|
||||||
msgstr "Invitation has been deleted"
|
msgstr "Invitation has been deleted"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:65
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:63
|
||||||
msgid "Invitation has been resent"
|
msgid "Invitation has been resent"
|
||||||
msgstr "Invitation has been resent"
|
msgstr "Invitation has been resent"
|
||||||
|
|
||||||
@ -1732,7 +1748,7 @@ msgstr "Invite Members"
|
|||||||
msgid "Invite team members"
|
msgid "Invite team members"
|
||||||
msgstr "Invite team members"
|
msgstr "Invite team members"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:130
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:128
|
||||||
msgid "Invited At"
|
msgid "Invited At"
|
||||||
msgstr "Invited At"
|
msgstr "Invited At"
|
||||||
|
|
||||||
@ -1768,15 +1784,15 @@ msgstr "Last 30 days"
|
|||||||
msgid "Last 7 days"
|
msgid "Last 7 days"
|
||||||
msgstr "Last 7 days"
|
msgstr "Last 7 days"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:52
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr "Last modified"
|
msgstr "Last modified"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:94
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:91
|
||||||
msgid "Last updated"
|
msgid "Last updated"
|
||||||
msgstr "Last updated"
|
msgstr "Last updated"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:53
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:52
|
||||||
msgid "Last updated at"
|
msgid "Last updated at"
|
||||||
msgstr "Last updated at"
|
msgstr "Last updated at"
|
||||||
|
|
||||||
@ -1785,7 +1801,7 @@ msgid "Last used"
|
|||||||
msgstr "Last used"
|
msgstr "Last used"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
|
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:119
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:117
|
||||||
msgid "Leave"
|
msgid "Leave"
|
||||||
msgstr "Leave"
|
msgstr "Leave"
|
||||||
|
|
||||||
@ -1805,8 +1821,8 @@ msgstr "Like to have your own public profile with agreements?"
|
|||||||
msgid "Link template"
|
msgid "Link template"
|
||||||
msgstr "Link template"
|
msgstr "Link template"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:80
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:79
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:85
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:84
|
||||||
msgid "Listening to {0}"
|
msgid "Listening to {0}"
|
||||||
msgstr "Listening to {0}"
|
msgstr "Listening to {0}"
|
||||||
|
|
||||||
@ -1839,7 +1855,7 @@ msgstr "Loading..."
|
|||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Login"
|
msgstr "Login"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:103
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:101
|
||||||
msgid "Manage"
|
msgid "Manage"
|
||||||
msgstr "Manage"
|
msgstr "Manage"
|
||||||
|
|
||||||
@ -1851,7 +1867,7 @@ msgstr "Manage {0}'s profile"
|
|||||||
msgid "Manage all teams you are currently associated with."
|
msgid "Manage all teams you are currently associated with."
|
||||||
msgstr "Manage all teams you are currently associated with."
|
msgstr "Manage all teams you are currently associated with."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:343
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
|
||||||
msgid "Manage details for this public template"
|
msgid "Manage details for this public template"
|
||||||
msgstr "Manage details for this public template"
|
msgstr "Manage details for this public template"
|
||||||
|
|
||||||
@ -1919,8 +1935,8 @@ msgstr "MAU (created document)"
|
|||||||
msgid "MAU (had document completed)"
|
msgid "MAU (had document completed)"
|
||||||
msgstr "MAU (had document completed)"
|
msgstr "MAU (had document completed)"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:92
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:90
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:115
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:113
|
||||||
msgid "Member Since"
|
msgid "Member Since"
|
||||||
msgstr "Member Since"
|
msgstr "Member Since"
|
||||||
|
|
||||||
@ -2045,7 +2061,7 @@ msgstr "No results found."
|
|||||||
msgid "No token provided"
|
msgid "No token provided"
|
||||||
msgstr "No token provided"
|
msgstr "No token provided"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:286
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:284
|
||||||
msgid "No valid direct templates found"
|
msgid "No valid direct templates found"
|
||||||
msgstr "No valid direct templates found"
|
msgstr "No valid direct templates found"
|
||||||
|
|
||||||
@ -2075,16 +2091,16 @@ msgstr "Nothing to do"
|
|||||||
msgid "On this page, you can create a new webhook."
|
msgid "On this page, you can create a new webhook."
|
||||||
msgstr "On this page, you can create a new webhook."
|
msgstr "On this page, you can create a new webhook."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:27
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:26
|
||||||
msgid "On this page, you can create new API tokens and manage the existing ones. <0/>Also see our <1>Documentation</1>."
|
msgid "On this page, you can create new API tokens and manage the existing ones. <0/>Also see our <1>Documentation</1>."
|
||||||
msgstr "On this page, you can create new API tokens and manage the existing ones. <0/>Also see our <1>Documentation</1>."
|
msgstr "On this page, you can create new API tokens and manage the existing ones. <0/>Also see our <1>Documentation</1>."
|
||||||
|
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:61
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:60
|
||||||
msgid "On this page, you can create new API tokens and manage the existing ones. <0/>You can view our swagger docs <1>here</1>"
|
msgid "On this page, you can create new API tokens and manage the existing ones. <0/>You can view our swagger docs <1>here</1>"
|
||||||
msgstr "On this page, you can create new API tokens and manage the existing ones. <0/>You can view our swagger docs <1>here</1>"
|
msgstr "On this page, you can create new API tokens and manage the existing ones. <0/>You can view our swagger docs <1>here</1>"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:30
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:29
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:35
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:34
|
||||||
msgid "On this page, you can create new Webhooks and manage the existing ones."
|
msgid "On this page, you can create new Webhooks and manage the existing ones."
|
||||||
msgstr "On this page, you can create new Webhooks and manage the existing ones."
|
msgstr "On this page, you can create new Webhooks and manage the existing ones."
|
||||||
|
|
||||||
@ -2128,7 +2144,7 @@ msgstr "Or continue with"
|
|||||||
msgid "Otherwise, the document will be created as a draft."
|
msgid "Otherwise, the document will be created as a draft."
|
||||||
msgstr "Otherwise, the document will be created as a draft."
|
msgstr "Otherwise, the document will be created as a draft."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:87
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
|
||||||
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:76
|
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:76
|
||||||
msgid "Owner"
|
msgid "Owner"
|
||||||
msgstr "Owner"
|
msgstr "Owner"
|
||||||
@ -2320,12 +2336,12 @@ msgstr "Preferences"
|
|||||||
msgid "Preview and configure template."
|
msgid "Preview and configure template."
|
||||||
msgstr "Preview and configure template."
|
msgstr "Preview and configure template."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
|
||||||
#: apps/web/src/components/formatter/template-type.tsx:22
|
#: apps/web/src/components/formatter/template-type.tsx:22
|
||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "Private"
|
msgstr "Private"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:116
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:115
|
||||||
msgid "Private templates can only be modified and viewed by you."
|
msgid "Private templates can only be modified and viewed by you."
|
||||||
msgstr "Private templates can only be modified and viewed by you."
|
msgstr "Private templates can only be modified and viewed by you."
|
||||||
|
|
||||||
@ -2349,7 +2365,7 @@ msgstr "Profile is currently <0>visible</0>."
|
|||||||
msgid "Profile updated"
|
msgid "Profile updated"
|
||||||
msgstr "Profile updated"
|
msgstr "Profile updated"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:79
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:78
|
||||||
#: apps/web/src/components/formatter/template-type.tsx:27
|
#: apps/web/src/components/formatter/template-type.tsx:27
|
||||||
msgid "Public"
|
msgid "Public"
|
||||||
msgstr "Public"
|
msgstr "Public"
|
||||||
@ -2370,7 +2386,7 @@ msgstr "Public profile URL"
|
|||||||
msgid "Public profile username"
|
msgid "Public profile username"
|
||||||
msgstr "Public profile username"
|
msgstr "Public profile username"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:83
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:82
|
||||||
msgid "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
|
msgid "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
|
||||||
msgstr "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
|
msgstr "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
|
||||||
|
|
||||||
@ -2391,7 +2407,7 @@ msgstr "Reauthentication is required to sign this field"
|
|||||||
msgid "Recent activity"
|
msgid "Recent activity"
|
||||||
msgstr "Recent activity"
|
msgstr "Recent activity"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:73
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
|
||||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
|
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
|
||||||
msgid "Recipient"
|
msgid "Recipient"
|
||||||
msgstr "Recipient"
|
msgstr "Recipient"
|
||||||
@ -2400,7 +2416,7 @@ msgstr "Recipient"
|
|||||||
msgid "Recipient updated"
|
msgid "Recipient updated"
|
||||||
msgstr "Recipient updated"
|
msgstr "Recipient updated"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:68
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:34
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:34
|
||||||
msgid "Recipients"
|
msgid "Recipients"
|
||||||
msgstr "Recipients"
|
msgstr "Recipients"
|
||||||
@ -2438,8 +2454,8 @@ msgstr "Remembered your password? <0>Sign In</0>"
|
|||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
|
||||||
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
|
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:168
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:166
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:169
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:167
|
||||||
#: apps/web/src/components/forms/avatar-image.tsx:169
|
#: apps/web/src/components/forms/avatar-image.tsx:169
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Remove"
|
msgstr "Remove"
|
||||||
@ -2448,7 +2464,7 @@ msgstr "Remove"
|
|||||||
msgid "Remove team email"
|
msgid "Remove team email"
|
||||||
msgstr "Remove team email"
|
msgstr "Remove team email"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:166
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:164
|
||||||
msgid "Remove team member"
|
msgid "Remove team member"
|
||||||
msgstr "Remove team member"
|
msgstr "Remove team member"
|
||||||
|
|
||||||
@ -2466,7 +2482,7 @@ msgid "Reseal document"
|
|||||||
msgstr "Reseal document"
|
msgstr "Reseal document"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
|
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:156
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:154
|
||||||
msgid "Resend"
|
msgid "Resend"
|
||||||
msgstr "Resend"
|
msgstr "Resend"
|
||||||
|
|
||||||
@ -2540,9 +2556,9 @@ msgstr "Revoke access"
|
|||||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
|
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
|
||||||
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
|
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
|
||||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
|
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:82
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:125
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:123
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:105
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Role"
|
msgstr "Role"
|
||||||
|
|
||||||
@ -2564,7 +2580,7 @@ msgstr "Save"
|
|||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Search"
|
msgstr "Search"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:141
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:140
|
||||||
msgid "Search by document title"
|
msgid "Search by document title"
|
||||||
msgstr "Search by document title"
|
msgstr "Search by document title"
|
||||||
|
|
||||||
@ -2604,11 +2620,11 @@ msgstr "Select a team to move this document to. This action cannot be undone."
|
|||||||
msgid "Select a team to move this template to. This action cannot be undone."
|
msgid "Select a team to move this template to. This action cannot be undone."
|
||||||
msgstr "Select a team to move this template to. This action cannot be undone."
|
msgstr "Select a team to move this template to. This action cannot be undone."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:263
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:261
|
||||||
msgid "Select a template you'd like to display on your public profile"
|
msgid "Select a template you'd like to display on your public profile"
|
||||||
msgstr "Select a template you'd like to display on your public profile"
|
msgstr "Select a template you'd like to display on your public profile"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:259
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:257
|
||||||
msgid "Select a template you'd like to display on your team's public profile"
|
msgid "Select a template you'd like to display on your team's public profile"
|
||||||
msgstr "Select a template you'd like to display on your team's public profile"
|
msgstr "Select a template you'd like to display on your team's public profile"
|
||||||
|
|
||||||
@ -2628,7 +2644,7 @@ msgstr "Send document"
|
|||||||
msgid "Send reminder"
|
msgid "Send reminder"
|
||||||
msgstr "Send reminder"
|
msgstr "Send reminder"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:65
|
||||||
msgid "Sender"
|
msgid "Sender"
|
||||||
msgstr "Sender"
|
msgstr "Sender"
|
||||||
|
|
||||||
@ -2673,7 +2689,7 @@ msgstr "Share Signing Card"
|
|||||||
msgid "Show"
|
msgid "Show"
|
||||||
msgstr "Show"
|
msgstr "Show"
|
||||||
|
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:111
|
#: apps/web/src/components/document/document-history-sheet.tsx:113
|
||||||
msgid "Show additional information"
|
msgid "Show additional information"
|
||||||
msgstr "Show additional information"
|
msgstr "Show additional information"
|
||||||
|
|
||||||
@ -2842,8 +2858,8 @@ msgstr "Site Settings"
|
|||||||
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
|
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
|
||||||
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
|
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:70
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:68
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:87
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:85
|
||||||
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
|
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
|
||||||
msgid "Something went wrong"
|
msgid "Something went wrong"
|
||||||
msgstr "Something went wrong"
|
msgstr "Something went wrong"
|
||||||
@ -2885,9 +2901,9 @@ msgstr "Sorry, we were unable to download the certificate. Please try again late
|
|||||||
msgid "Stats"
|
msgid "Stats"
|
||||||
msgstr "Stats"
|
msgstr "Stats"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:82
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
|
||||||
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
|
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:83
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
|
||||||
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
|
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Status"
|
msgstr "Status"
|
||||||
@ -2928,11 +2944,11 @@ msgstr "Subscriptions"
|
|||||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
|
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
|
||||||
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68
|
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:64
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:81
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79
|
||||||
#: apps/web/src/components/forms/public-profile-form.tsx:80
|
#: apps/web/src/components/forms/public-profile-form.tsx:80
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:135
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:172
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:170
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "Success"
|
msgstr "Success"
|
||||||
|
|
||||||
@ -2944,8 +2960,8 @@ msgstr "Successfully created passkey"
|
|||||||
msgid "System Theme"
|
msgid "System Theme"
|
||||||
msgstr "System Theme"
|
msgstr "System Theme"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:67
|
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:65
|
||||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:66
|
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:64
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr "Team"
|
msgstr "Team"
|
||||||
|
|
||||||
@ -2991,8 +3007,8 @@ msgstr "Team invitation"
|
|||||||
msgid "Team invitations have been sent."
|
msgid "Team invitations have been sent."
|
||||||
msgstr "Team invitations have been sent."
|
msgstr "Team invitations have been sent."
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:111
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:109
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:88
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:86
|
||||||
msgid "Team Member"
|
msgid "Team Member"
|
||||||
msgstr "Team Member"
|
msgstr "Team Member"
|
||||||
|
|
||||||
@ -3001,11 +3017,11 @@ msgstr "Team Member"
|
|||||||
msgid "Team Name"
|
msgid "Team Name"
|
||||||
msgstr "Team Name"
|
msgstr "Team Name"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:106
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
|
||||||
msgid "Team Only"
|
msgid "Team Only"
|
||||||
msgstr "Team Only"
|
msgstr "Team Only"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:111
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:110
|
||||||
msgid "Team only templates are not linked anywhere and are visible only to your team."
|
msgid "Team only templates are not linked anywhere and are visible only to your team."
|
||||||
msgstr "Team only templates are not linked anywhere and are visible only to your team."
|
msgstr "Team only templates are not linked anywhere and are visible only to your team."
|
||||||
|
|
||||||
@ -3063,7 +3079,7 @@ msgid "Teams restricted"
|
|||||||
msgstr "Teams restricted"
|
msgstr "Teams restricted"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
|
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:273
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Template"
|
msgstr "Template"
|
||||||
|
|
||||||
@ -3079,11 +3095,11 @@ msgstr "Template document uploaded"
|
|||||||
msgid "Template duplicated"
|
msgid "Template duplicated"
|
||||||
msgstr "Template duplicated"
|
msgstr "Template duplicated"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:136
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:134
|
||||||
msgid "Template has been removed from your public profile."
|
msgid "Template has been removed from your public profile."
|
||||||
msgstr "Template has been removed from your public profile."
|
msgstr "Template has been removed from your public profile."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:173
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:171
|
||||||
msgid "Template has been updated."
|
msgid "Template has been updated."
|
||||||
msgstr "Template has been updated."
|
msgstr "Template has been updated."
|
||||||
|
|
||||||
@ -3167,11 +3183,11 @@ msgstr "The profile link has been copied to your clipboard"
|
|||||||
msgid "The profile you are looking for could not be found."
|
msgid "The profile you are looking for could not be found."
|
||||||
msgstr "The profile you are looking for could not be found."
|
msgstr "The profile you are looking for could not be found."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:382
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:380
|
||||||
msgid "The public description that will be displayed with this template"
|
msgid "The public description that will be displayed with this template"
|
||||||
msgstr "The public description that will be displayed with this template"
|
msgstr "The public description that will be displayed with this template"
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:360
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:358
|
||||||
msgid "The public name for your template"
|
msgid "The public name for your template"
|
||||||
msgstr "The public name for your template"
|
msgstr "The public name for your template"
|
||||||
|
|
||||||
@ -3207,7 +3223,7 @@ msgstr "The team you are looking for may have been removed, renamed or may have
|
|||||||
msgid "The template has been successfully moved to the selected team."
|
msgid "The template has been successfully moved to the selected team."
|
||||||
msgstr "The template has been successfully moved to the selected team."
|
msgstr "The template has been successfully moved to the selected team."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:445
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:443
|
||||||
msgid "The template will be removed from your profile"
|
msgid "The template will be removed from your profile"
|
||||||
msgstr "The template will be removed from your profile"
|
msgstr "The template will be removed from your profile"
|
||||||
|
|
||||||
@ -3349,17 +3365,17 @@ msgstr "This username has already been taken"
|
|||||||
msgid "This username is already taken"
|
msgid "This username is already taken"
|
||||||
msgstr "This username is already taken"
|
msgstr "This username is already taken"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:79
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:77
|
||||||
msgid "Time"
|
msgid "Time"
|
||||||
msgstr "Time"
|
msgstr "Time"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:100
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:97
|
||||||
msgid "Time zone"
|
msgid "Time zone"
|
||||||
msgstr "Time zone"
|
msgstr "Time zone"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:68
|
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
|
||||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:64
|
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:60
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:62
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Title"
|
msgstr "Title"
|
||||||
|
|
||||||
@ -3423,8 +3439,8 @@ msgstr "Token created"
|
|||||||
msgid "Token deleted"
|
msgid "Token deleted"
|
||||||
msgstr "Token deleted"
|
msgstr "Token deleted"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:78
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:111
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:114
|
||||||
msgid "Token doesn't have an expiration date"
|
msgid "Token doesn't have an expiration date"
|
||||||
msgstr "Token doesn't have an expiration date"
|
msgstr "Token doesn't have an expiration date"
|
||||||
|
|
||||||
@ -3497,7 +3513,7 @@ msgid "Two-factor authentication has been disabled for your account. You will no
|
|||||||
msgstr "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
|
msgstr "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
|
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:68
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:67
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Type"
|
msgstr "Type"
|
||||||
|
|
||||||
@ -3529,7 +3545,7 @@ msgstr "Unable to create direct template access. Please try again later."
|
|||||||
msgid "Unable to decline this team invitation at this time."
|
msgid "Unable to decline this team invitation at this time."
|
||||||
msgstr "Unable to decline this team invitation at this time."
|
msgstr "Unable to decline this team invitation at this time."
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:88
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:86
|
||||||
msgid "Unable to delete invitation. Please try again."
|
msgid "Unable to delete invitation. Please try again."
|
||||||
msgstr "Unable to delete invitation. Please try again."
|
msgstr "Unable to delete invitation. Please try again."
|
||||||
|
|
||||||
@ -3546,7 +3562,7 @@ msgid "Unable to join this team at this time."
|
|||||||
msgstr "Unable to join this team at this time."
|
msgstr "Unable to join this team at this time."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:72
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:72
|
||||||
#: apps/web/src/components/document/document-history-sheet.tsx:125
|
#: apps/web/src/components/document/document-history-sheet.tsx:127
|
||||||
msgid "Unable to load document history"
|
msgid "Unable to load document history"
|
||||||
msgstr "Unable to load document history"
|
msgstr "Unable to load document history"
|
||||||
|
|
||||||
@ -3562,7 +3578,7 @@ msgstr "Unable to remove email verification at this time. Please try again."
|
|||||||
msgid "Unable to remove team email at this time. Please try again."
|
msgid "Unable to remove team email at this time. Please try again."
|
||||||
msgstr "Unable to remove team email at this time. Please try again."
|
msgstr "Unable to remove team email at this time. Please try again."
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:71
|
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:69
|
||||||
msgid "Unable to resend invitation. Please try again."
|
msgid "Unable to resend invitation. Please try again."
|
||||||
msgstr "Unable to resend invitation. Please try again."
|
msgstr "Unable to resend invitation. Please try again."
|
||||||
|
|
||||||
@ -3606,7 +3622,7 @@ msgstr "Unpaid"
|
|||||||
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
|
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
|
||||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
|
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
|
||||||
#: apps/web/src/components/forms/public-profile-form.tsx:279
|
#: apps/web/src/components/forms/public-profile-form.tsx:279
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:430
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:428
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Update"
|
msgstr "Update"
|
||||||
|
|
||||||
@ -3630,7 +3646,7 @@ msgstr "Update profile"
|
|||||||
msgid "Update Recipient"
|
msgid "Update Recipient"
|
||||||
msgstr "Update Recipient"
|
msgstr "Update Recipient"
|
||||||
|
|
||||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:148
|
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
|
||||||
msgid "Update role"
|
msgid "Update role"
|
||||||
msgstr "Update role"
|
msgstr "Update role"
|
||||||
|
|
||||||
@ -3669,7 +3685,7 @@ msgstr "Updating profile..."
|
|||||||
msgid "Upload Avatar"
|
msgid "Upload Avatar"
|
||||||
msgstr "Upload Avatar"
|
msgstr "Upload Avatar"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:44
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:31
|
||||||
msgid "Uploaded by"
|
msgid "Uploaded by"
|
||||||
msgstr "Uploaded by"
|
msgstr "Uploaded by"
|
||||||
|
|
||||||
@ -3699,7 +3715,7 @@ msgstr "Use Backup Code"
|
|||||||
msgid "Use Template"
|
msgid "Use Template"
|
||||||
msgstr "Use Template"
|
msgstr "Use Template"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:84
|
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:82
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "User"
|
msgstr "User"
|
||||||
|
|
||||||
@ -3881,7 +3897,7 @@ msgstr "We encountered an unknown error while attempting to invite team members.
|
|||||||
msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
|
msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
|
||||||
msgstr "We encountered an unknown error while attempting to leave this team. Please try again later."
|
msgstr "We encountered an unknown error while attempting to leave this team. Please try again later."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:145
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
|
||||||
msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
|
msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
|
||||||
msgstr "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
|
msgstr "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
|
||||||
|
|
||||||
@ -3937,7 +3953,7 @@ msgstr "We encountered an unknown error while attempting to update the avatar. P
|
|||||||
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
|
msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
|
||||||
msgstr "We encountered an unknown error while attempting to update the banner. Please try again later."
|
msgstr "We encountered an unknown error while attempting to update the banner. Please try again later."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:182
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
|
||||||
msgid "We encountered an unknown error while attempting to update the template. Please try again later."
|
msgid "We encountered an unknown error while attempting to update the template. Please try again later."
|
||||||
msgstr "We encountered an unknown error while attempting to update the template. Please try again later."
|
msgstr "We encountered an unknown error while attempting to update the template. Please try again later."
|
||||||
|
|
||||||
@ -4036,8 +4052,8 @@ msgstr "Webhook updated"
|
|||||||
msgid "Webhook URL"
|
msgid "Webhook URL"
|
||||||
msgstr "Webhook URL"
|
msgstr "Webhook URL"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:29
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:28
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:34
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:33
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:103
|
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:103
|
||||||
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:106
|
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:106
|
||||||
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:94
|
#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:94
|
||||||
@ -4077,7 +4093,7 @@ msgstr "Write about yourself"
|
|||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Yearly"
|
msgstr "Yearly"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:45
|
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
|
||||||
msgid "You"
|
msgid "You"
|
||||||
msgstr "You"
|
msgstr "You"
|
||||||
|
|
||||||
@ -4117,7 +4133,7 @@ msgstr "You are about to remove the following user from <0>{teamName}</0>."
|
|||||||
msgid "You are about to revoke access for team <0>{0}</0> ({1}) to use your email."
|
msgid "You are about to revoke access for team <0>{0}</0> ({1}) to use your email."
|
||||||
msgstr "You are about to revoke access for team <0>{0}</0> ({1}) to use your email."
|
msgstr "You are about to revoke access for team <0>{0}</0> ({1}) to use your email."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80
|
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:78
|
||||||
msgid "You are currently on the <0>Free Plan</0>."
|
msgid "You are currently on the <0>Free Plan</0>."
|
||||||
msgstr "You are currently on the <0>Free Plan</0>."
|
msgstr "You are currently on the <0>Free Plan</0>."
|
||||||
|
|
||||||
@ -4198,8 +4214,8 @@ msgstr "You have been invited by <0>{0}</0> to join their team."
|
|||||||
msgid "You have declined the invitation from <0>{0}</0> to join their team."
|
msgid "You have declined the invitation from <0>{0}</0> to join their team."
|
||||||
msgstr "You have declined the invitation from <0>{0}</0> to join their team."
|
msgstr "You have declined the invitation from <0>{0}</0> to join their team."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:45
|
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:44
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:50
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:49
|
||||||
msgid "You have no webhooks yet. Your webhooks will be shown here once you create them."
|
msgid "You have no webhooks yet. Your webhooks will be shown here once you create them."
|
||||||
msgstr "You have no webhooks yet. Your webhooks will be shown here once you create them."
|
msgstr "You have no webhooks yet. Your webhooks will be shown here once you create them."
|
||||||
|
|
||||||
@ -4219,7 +4235,7 @@ msgstr "You have reached the maximum limit of {0} direct templates. <0>Upgrade y
|
|||||||
msgid "You have reached your document limit."
|
msgid "You have reached your document limit."
|
||||||
msgstr "You have reached your document limit."
|
msgstr "You have reached your document limit."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:182
|
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:181
|
||||||
msgid "You have reached your document limit. <0>Upgrade your account to continue!</0>"
|
msgid "You have reached your document limit. <0>Upgrade your account to continue!</0>"
|
||||||
msgstr "You have reached your document limit. <0>Upgrade your account to continue!</0>"
|
msgstr "You have reached your document limit. <0>Upgrade your account to continue!</0>"
|
||||||
|
|
||||||
@ -4307,11 +4323,11 @@ msgstr "Your avatar has been updated successfully."
|
|||||||
msgid "Your banner has been updated successfully."
|
msgid "Your banner has been updated successfully."
|
||||||
msgstr "Your banner has been updated successfully."
|
msgstr "Your banner has been updated successfully."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:121
|
#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:119
|
||||||
msgid "Your current plan is past due. Please update your payment information."
|
msgid "Your current plan is past due. Please update your payment information."
|
||||||
msgstr "Your current plan is past due. Please update your payment information."
|
msgstr "Your current plan is past due. Please update your payment information."
|
||||||
|
|
||||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:253
|
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
|
||||||
msgid "Your direct signing templates"
|
msgid "Your direct signing templates"
|
||||||
msgstr "Your direct signing templates"
|
msgstr "Your direct signing templates"
|
||||||
|
|
||||||
@ -4355,8 +4371,8 @@ msgstr "Your email has been successfully confirmed! You can now use all features
|
|||||||
msgid "Your email is currently being used by team <0>{0}</0> ({1})."
|
msgid "Your email is currently being used by team <0>{0}</0> ({1})."
|
||||||
msgstr "Your email is currently being used by team <0>{0}</0> ({1})."
|
msgstr "Your email is currently being used by team <0>{0}</0> ({1})."
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:48
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:47
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:81
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:80
|
||||||
msgid "Your existing tokens"
|
msgid "Your existing tokens"
|
||||||
msgstr "Your existing tokens"
|
msgstr "Your existing tokens"
|
||||||
|
|
||||||
@ -4430,7 +4446,7 @@ msgstr "Your token has expired!"
|
|||||||
msgid "Your token was created successfully! Make sure to copy it because you won't be able to see it again!"
|
msgid "Your token was created successfully! Make sure to copy it because you won't be able to see it again!"
|
||||||
msgstr "Your token was created successfully! Make sure to copy it because you won't be able to see it again!"
|
msgstr "Your token was created successfully! Make sure to copy it because you won't be able to see it again!"
|
||||||
|
|
||||||
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:54
|
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:53
|
||||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:87
|
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
|
||||||
msgid "Your tokens will be shown here once you create them."
|
msgid "Your tokens will be shown here once you create them."
|
||||||
msgstr "Your tokens will be shown here once you create them."
|
msgstr "Your tokens will be shown here once you create them."
|
||||||
|
|||||||
@ -2,8 +2,8 @@ import type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension
|
|||||||
|
|
||||||
import type { I18n } from '@lingui/core';
|
import type { I18n } from '@lingui/core';
|
||||||
|
|
||||||
import { IS_APP_WEB } from '../constants/app';
|
import { IS_APP_WEB, IS_APP_WEB_I18N_ENABLED } from '../constants/app';
|
||||||
import type { SupportedLanguageCodes } from '../constants/i18n';
|
import type { I18nLocaleData, SupportedLanguageCodes } from '../constants/i18n';
|
||||||
import { APP_I18N_OPTIONS } from '../constants/i18n';
|
import { APP_I18N_OPTIONS } from '../constants/i18n';
|
||||||
|
|
||||||
export async function dynamicActivate(i18nInstance: I18n, locale: string) {
|
export async function dynamicActivate(i18nInstance: I18n, locale: string) {
|
||||||
@ -14,48 +14,58 @@ export async function dynamicActivate(i18nInstance: I18n, locale: string) {
|
|||||||
i18nInstance.loadAndActivate({ locale, messages });
|
i18nInstance.loadAndActivate({ locale, messages });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
const parseLanguageFromLocale = (locale: string): SupportedLanguageCodes | null => {
|
||||||
* Extract the language if supported from the cookies header.
|
const [language, _country] = locale.split('-');
|
||||||
*
|
|
||||||
* Returns `null` if not supported or not found.
|
|
||||||
*/
|
|
||||||
export const extractSupportedLanguageFromCookies = (
|
|
||||||
cookies: ReadonlyRequestCookies,
|
|
||||||
): SupportedLanguageCodes | null => {
|
|
||||||
const preferredLanguage = cookies.get('i18n');
|
|
||||||
|
|
||||||
const foundSupportedLanguage = APP_I18N_OPTIONS.supportedLangs.find(
|
|
||||||
(lang): lang is SupportedLanguageCodes => lang === preferredLanguage?.value,
|
|
||||||
);
|
|
||||||
|
|
||||||
return foundSupportedLanguage || null;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the language from the `accept-language` header.
|
|
||||||
*
|
|
||||||
* Returns `null` if not supported or not found.
|
|
||||||
*/
|
|
||||||
export const extractSupportedLanguageFromHeaders = (
|
|
||||||
headers: Headers,
|
|
||||||
): SupportedLanguageCodes | null => {
|
|
||||||
const locales = headers.get('accept-language') ?? '';
|
|
||||||
|
|
||||||
const [locale] = locales.split(',');
|
|
||||||
|
|
||||||
// Convert locale to language.
|
|
||||||
const [language] = locale.split('-');
|
|
||||||
|
|
||||||
const foundSupportedLanguage = APP_I18N_OPTIONS.supportedLangs.find(
|
const foundSupportedLanguage = APP_I18N_OPTIONS.supportedLangs.find(
|
||||||
(lang): lang is SupportedLanguageCodes => lang === language,
|
(lang): lang is SupportedLanguageCodes => lang === language,
|
||||||
);
|
);
|
||||||
|
|
||||||
return foundSupportedLanguage || null;
|
if (!foundSupportedLanguage) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return foundSupportedLanguage;
|
||||||
};
|
};
|
||||||
|
|
||||||
type ExtractSupportedLanguageOptions = {
|
/**
|
||||||
headers?: Headers;
|
* Extract the language if supported from the cookies header.
|
||||||
cookies?: ReadonlyRequestCookies;
|
*
|
||||||
|
* Returns `null` if not supported or not found.
|
||||||
|
*/
|
||||||
|
export const extractLocaleDataFromCookies = (
|
||||||
|
cookies: ReadonlyRequestCookies,
|
||||||
|
): SupportedLanguageCodes | null => {
|
||||||
|
const preferredLocale = cookies.get('i18n')?.value || '';
|
||||||
|
|
||||||
|
const language = parseLanguageFromLocale(preferredLocale || '');
|
||||||
|
|
||||||
|
if (!language) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return language;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts the language from the `accept-language` header.
|
||||||
|
*/
|
||||||
|
export const extractLocaleDataFromHeaders = (
|
||||||
|
headers: Headers,
|
||||||
|
): { lang: SupportedLanguageCodes | null; locales: string[] } => {
|
||||||
|
const headerLocales = (headers.get('accept-language') ?? '').split(',');
|
||||||
|
|
||||||
|
const language = parseLanguageFromLocale(headerLocales[0]);
|
||||||
|
|
||||||
|
return {
|
||||||
|
lang: language,
|
||||||
|
locales: [headerLocales[0]],
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
type ExtractLocaleDataOptions = {
|
||||||
|
headers: Headers;
|
||||||
|
cookies: ReadonlyRequestCookies;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -63,25 +73,25 @@ type ExtractSupportedLanguageOptions = {
|
|||||||
*
|
*
|
||||||
* Will return the default fallback language if not found.
|
* Will return the default fallback language if not found.
|
||||||
*/
|
*/
|
||||||
export const extractSupportedLanguage = ({
|
export const extractLocaleData = ({
|
||||||
headers,
|
headers,
|
||||||
cookies,
|
cookies,
|
||||||
}: ExtractSupportedLanguageOptions): SupportedLanguageCodes => {
|
}: ExtractLocaleDataOptions): I18nLocaleData => {
|
||||||
if (cookies) {
|
let lang: SupportedLanguageCodes | null = extractLocaleDataFromCookies(cookies);
|
||||||
const langCookie = extractSupportedLanguageFromCookies(cookies);
|
|
||||||
|
|
||||||
if (langCookie) {
|
const langHeader = extractLocaleDataFromHeaders(headers);
|
||||||
return langCookie;
|
|
||||||
}
|
if (!lang && langHeader?.lang) {
|
||||||
|
lang = langHeader.lang;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (headers) {
|
// Override web app to be English.
|
||||||
const langHeader = extractSupportedLanguageFromHeaders(headers);
|
if (!IS_APP_WEB_I18N_ENABLED && IS_APP_WEB) {
|
||||||
|
lang = 'en';
|
||||||
if (langHeader) {
|
|
||||||
return langHeader;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return APP_I18N_OPTIONS.sourceLang;
|
return {
|
||||||
|
lang: lang || APP_I18N_OPTIONS.sourceLang,
|
||||||
|
locales: langHeader.locales,
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user