fix: detect imported recipe language for Translate button (v0.33.1)

URL import extracts content in the source page's own language (no
translation), but never recorded what that language was, so the
Translate button's "recipe.language !== my locale" check always saw
null and showed the button unconditionally. The extractor now returns
a detected ISO 639-1 language code alongside the recipe.

Photo import always writes in the caller's locale already (see its
langInstruction) but never recorded that either — now sets it
directly to locale since it's known, not detected.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Arnaud
2026-07-14 15:21:15 +02:00
parent af92b8cc71
commit b330583dd3
6 changed files with 23 additions and 4 deletions
+2 -1
View File
@@ -6,6 +6,7 @@ import { dietaryTagsSchema, ingredientSchema, stepSchema } from "./recipe-schema
const ImportedRecipeSchema = z.object({
recipeType: z.enum(["dish", "drink"]).describe("\"drink\" only for a beverage/cocktail (no cooking step) — \"dish\" for anything else, including if unsure."),
language: z.string().min(2).max(10).describe("ISO 639-1 code of the language the recipe content (title/ingredients/steps) is actually written in, e.g. \"en\", \"fr\" — the source page's language, not a language to translate into."),
title: z.string(),
description: z.string().optional(),
baseServings: z.number().int().min(1).optional(),
@@ -42,7 +43,7 @@ export async function importFromUrl(url: string, config?: AiConfig): Promise<Imp
model,
schema: ImportedRecipeSchema,
system:
"You are an expert at extracting structured recipe data from web page text. Extract all recipe information accurately. For ingredients, separate quantity, unit, and name. For steps, extract timer durations in seconds when mentioned. Set recipeType to \"drink\" only for a beverage/cocktail with no cooking involved — never set cookMins for a drink.",
"You are an expert at extracting structured recipe data from web page text. Extract all recipe information accurately, in the same language as the source page — do not translate it. For ingredients, separate quantity, unit, and name. For steps, extract timer durations in seconds when mentioned. Set recipeType to \"drink\" only for a beverage/cocktail with no cooking involved — never set cookMins for a drink. Set language to the ISO 639-1 code of the page's actual language.",
prompt: `Extract the recipe from this web page:\n\nURL: ${url}\n\nContent:\n${cleaned}`,
});