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")}
+
+
+