fix(i18n): translate remaining recipe card/detail strings, localize AI responses

Recipe cards, the recipe detail page, and meal planner still rendered raw
"{n} servings"/"{n}m cook"/"{n} srv" text and untranslated difficulty labels
outside the earlier i18n pass. Also wires the user's locale into AI features
that previously always answered in English regardless of app language:
recipe chat, ingredient substitution, recipe ideas, and generate-from-idea.
The recipe-language picker in the AI generate dialog now defaults to the
user's locale instead of always defaulting to English.
This commit is contained in:
Arnaud
2026-07-02 08:25:51 +02:00
parent 01fdbb880b
commit 2154512e54
15 changed files with 64 additions and 24 deletions
@@ -7,6 +7,7 @@ import { Sparkles, Loader2 } from "lucide-react";
import { toast } from "sonner";
import { Button } from "@/components/ui/button";
import { FakeProgressBar } from "@/components/ui/fake-progress-bar";
import { useLocale } from "@/lib/i18n/provider";
type GeneratedRecipe = {
ingredients: Array<{ rawName: string; quantity?: number; unit?: string; note?: string }>;
@@ -24,6 +25,7 @@ export function GenerateContentButton({
}) {
const t = useTranslations("ai.generate");
const router = useRouter();
const locale = useLocale();
const [busy, setBusy] = useState(false);
async function generate() {
@@ -36,7 +38,7 @@ export function GenerateContentButton({
const genRes = await fetch("/api/v1/ai/generate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ prompt }),
body: JSON.stringify({ prompt, language: locale }),
});
if (!genRes.ok) {