feat: web i18n (#1286)

This commit is contained in:
David Nguyen
2024-08-27 20:34:39 +09:00
committed by GitHub
parent 0829311214
commit 75c8772a02
294 changed files with 14846 additions and 2229 deletions

View File

@ -1,7 +1,9 @@
import Link from 'next/link';
import { Trans } from '@lingui/macro';
import { DateTime } from 'luxon';
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
import { getServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session';
import { encryptSecondaryData } from '@documenso/lib/server-only/crypto/encrypt';
import { declineTeamInvitation } from '@documenso/lib/server-only/team/decline-team-invitation';
@ -19,6 +21,8 @@ type DeclineInvitationPageProps = {
export default async function DeclineInvitationPage({
params: { token },
}: DeclineInvitationPageProps) {
setupI18nSSR();
const session = await getServerComponentSession();
const teamMemberInvite = await prisma.teamMemberInvite.findUnique({
@ -31,14 +35,18 @@ export default async function DeclineInvitationPage({
return (
<div className="w-screen max-w-lg px-4">
<div className="w-full">
<h1 className="text-4xl font-semibold">Invalid token</h1>
<h1 className="text-4xl font-semibold">
<Trans>Invalid token</Trans>
</h1>
<p className="text-muted-foreground mb-4 mt-2 text-sm">
This token is invalid or has expired. No action is needed.
<Trans>This token is invalid or has expired. No action is needed.</Trans>
</p>
<Button asChild>
<Link href="/">Return</Link>
<Link href="/">
<Trans>Return</Trans>
</Link>
</Button>
</div>
</div>
@ -79,18 +87,24 @@ export default async function DeclineInvitationPage({
if (!user) {
return (
<div>
<h1 className="text-4xl font-semibold">Team invitation</h1>
<h1 className="text-4xl font-semibold">
<Trans>Team invitation</Trans>
</h1>
<p className="text-muted-foreground mt-2 text-sm">
You have been invited by <strong>{team.name}</strong> to join their team.
<Trans>
You have been invited by <strong>{team.name}</strong> to join their team.
</Trans>
</p>
<p className="text-muted-foreground mb-4 mt-1 text-sm">
To decline this invitation you must create an account.
<Trans>To decline this invitation you must create an account.</Trans>
</p>
<Button asChild>
<Link href={`/signup?email=${encodeURIComponent(email)}`}>Create account</Link>
<Link href={`/signup?email=${encodeURIComponent(email)}`}>
<Trans>Create account</Trans>
</Link>
</Button>
</div>
);
@ -100,19 +114,27 @@ export default async function DeclineInvitationPage({
return (
<div className="w-screen max-w-lg px-4">
<h1 className="text-4xl font-semibold">Invitation declined</h1>
<h1 className="text-4xl font-semibold">
<Trans>Invitation declined</Trans>
</h1>
<p className="text-muted-foreground mb-4 mt-2 text-sm">
You have declined the invitation from <strong>{team.name}</strong> to join their team.
<Trans>
You have declined the invitation from <strong>{team.name}</strong> to join their team.
</Trans>
</p>
{isSessionUserTheInvitedUser ? (
<Button asChild>
<Link href="/">Return to Dashboard</Link>
<Link href="/">
<Trans>Return to Dashboard</Trans>
</Link>
</Button>
) : (
<Button asChild>
<Link href="/">Return to Home</Link>
<Link href="/">
<Trans>Return to Home</Trans>
</Link>
</Button>
)}
</div>