From ac3dfe69cdc0b53998163555be71a0f5b026df2f Mon Sep 17 00:00:00 2001 From: Asis Ferrer Date: Thu, 11 Jun 2026 04:55:47 +0200 Subject: [PATCH] feat(i18n): add locale dictionaries and pilot surfaces --- .env.example | 1 + .../(auth)/login/_components/login-form.tsx | 13 ++- src/app/(auth)/login/page.tsx | 10 ++- .../(dashboard)/(home)/_components/card.tsx | 6 +- src/app/(dashboard)/(home)/page.tsx | 14 ++- src/app/layout.tsx | 7 +- src/i18n/dictionaries/en.ts | 27 ++++++ src/i18n/dictionaries/es.ts | 27 ++++++ src/i18n/dictionaries/index.ts | 15 ++++ src/i18n/locales.ts | 21 +++++ src/i18n/server.ts | 27 ++++++ tests/e2e/app.smoke.spec.ts | 34 ++++++-- tests/e2e/i18n-cookie.spec.ts | 37 ++++++++ tests/unit/i18n/dictionaries.test.ts | 86 +++++++++++++++++++ tests/unit/i18n/locales.test.ts | 48 +++++++++++ 15 files changed, 354 insertions(+), 19 deletions(-) create mode 100644 src/i18n/dictionaries/en.ts create mode 100644 src/i18n/dictionaries/es.ts create mode 100644 src/i18n/dictionaries/index.ts create mode 100644 src/i18n/locales.ts create mode 100644 src/i18n/server.ts create mode 100644 tests/e2e/i18n-cookie.spec.ts create mode 100644 tests/unit/i18n/dictionaries.test.ts create mode 100644 tests/unit/i18n/locales.test.ts diff --git a/.env.example b/.env.example index 96102bb..bb911f7 100644 --- a/.env.example +++ b/.env.example @@ -14,6 +14,7 @@ DEMO_MODE=false DOMAIN=localhost AUTH_TRUST_HOST="http://localhost" AUTH_SECRET=your_secret_key_here +STOCK_MANAGER_DEFAULT_LOCALE=en # ADMIN BOOTSTRAP ADMIN_BOOTSTRAP_ENABLED=true diff --git a/src/app/(auth)/login/_components/login-form.tsx b/src/app/(auth)/login/_components/login-form.tsx index dd31495..d342327 100644 --- a/src/app/(auth)/login/_components/login-form.tsx +++ b/src/app/(auth)/login/_components/login-form.tsx @@ -6,9 +6,14 @@ import { useState } from "react" import { useForm } from "react-hook-form" import { signInAction } from "@/actions/auth.actions" import { Button } from "@/components/ui/button" +import type { Dictionary } from "@/i18n/dictionaries" import { type SignInFormType, signInSchema } from "@/schemas/auth.schema" -export default function SignInForm() { +type SignInFormProps = { + copy: Dictionary["login"] +} + +export default function SignInForm({ copy }: SignInFormProps) { const router = useRouter() const searchParams = useSearchParams() const callbackUrl = searchParams.get("callbackUrl") @@ -37,7 +42,7 @@ export default function SignInForm() { return (