diff --git a/app/f/[slug]/page.tsx b/app/f/[slug]/page.tsx index 0f0b1f3..48ad775 100644 --- a/app/f/[slug]/page.tsx +++ b/app/f/[slug]/page.tsx @@ -1,9 +1,15 @@ import type { Metadata } from "next"; import { notFound } from "next/navigation"; +import { I18nProvider } from "@/components/i18n-provider"; import { PublicFormRunner } from "@/components/public-form-runner"; import { getPublicFormBySlug } from "@/lib/forms"; -import { getRequestI18n } from "@/lib/i18n-server"; +import { resolveAppLocale } from "@/lib/i18n"; +import { + getMessages, + getRequestI18n, + getRequestLocale, +} from "@/lib/i18n-server"; import { resolveTitle, withTitle } from "@/lib/metadata"; async function getPublicForm(slug: string) { @@ -35,10 +41,15 @@ export default async function PublicFormPage({ }) { const { slug } = await params; const form = await getPublicForm(slug); + const requestLocale = await getRequestLocale(); + const locale = resolveAppLocale(requestLocale, form.respondentLocale); + const messages = await getMessages(locale); return ( -
- -
+ +
+ +
+
); } diff --git a/components/form-builder-panels.tsx b/components/form-builder-panels.tsx index eb8f3f7..c887946 100644 --- a/components/form-builder-panels.tsx +++ b/components/form-builder-panels.tsx @@ -47,6 +47,13 @@ import { PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; import { blockTypeTranslationKeys, @@ -66,6 +73,7 @@ import { type ChoiceOptionDraft, } from "@/lib/form-builder-drafts"; import type { BuilderBlock, BuilderForm } from "@/lib/form-types"; +import { supportedLocales, type AppLocale } from "@/lib/i18n"; export type FormMetadataDraft = { title: string; @@ -73,6 +81,7 @@ export type FormMetadataDraft = { completionMessage: string; completionLinkLabel: string; completionLinkUrl: string; + respondentLocale: AppLocale | null; showProgress: boolean; slug: string; }; @@ -303,6 +312,39 @@ export function FormSettingsPanel({

+
+ + {t("builder.respondentLanguage")} + + + + {t("builder.respondentLanguageHelp")} + +
+