From 715f86d26d178e011936611a782c6f98996591ac Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Fri, 26 Dec 2025 21:41:37 +0100 Subject: [PATCH] make yeast swapper bilingual with case-insensitive detection --- src/lib/components/HefeSwapper.svelte | 19 +++++++++++-------- src/lib/components/IngredientsPage.svelte | 9 +++++---- src/routes/[recipeLang]/[name]/+page.ts | 11 ++++++----- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/lib/components/HefeSwapper.svelte b/src/lib/components/HefeSwapper.svelte index 95c11c9..3646b76 100644 --- a/src/lib/components/HefeSwapper.svelte +++ b/src/lib/components/HefeSwapper.svelte @@ -3,15 +3,18 @@ import { browser } from '$app/environment'; import { enhance } from '$app/forms'; import { page } from '$app/stores'; - - export let item; - export let multiplier = 1; - export let yeastId = 0; - + + let { item, multiplier = 1, yeastId = 0, lang = 'de' } = $props(); + const dispatch = createEventDispatcher(); - + + const isEnglish = $derived(lang === 'en'); + const toggleTitle = $derived(isEnglish + ? 'Switch between fresh yeast and dry yeast' + : 'Zwischen Frischhefe und Trockenhefe wechseln'); + // Get all current URL parameters to preserve state - $: currentParams = browser ? new URLSearchParams(window.location.search) : $page.url.searchParams; + const currentParams = $derived(browser ? new URLSearchParams(window.location.search) : $page.url.searchParams); function toggleHefe(event) { // If JavaScript is available, prevent form submission and handle client-side @@ -54,7 +57,7 @@ {#each Array.from(currentParams.entries()) as [key, value]} {/each} - diff --git a/src/lib/components/IngredientsPage.svelte b/src/lib/components/IngredientsPage.svelte index e8c1050..99c8bf8 100644 --- a/src/lib/components/IngredientsPage.svelte +++ b/src/lib/components/IngredientsPage.svelte @@ -25,8 +25,9 @@ const yeastIds = $derived.by(() => { if (list.list) { for (let ingredientIndex = 0; ingredientIndex < list.list.length; ingredientIndex++) { const ingredient = list.list[ingredientIndex]; - if (ingredient.name === "Frischhefe" || ingredient.name === "Trockenhefe" || - ingredient.name === "Fresh Yeast" || ingredient.name === "Dry Yeast") { + const nameLower = ingredient.name.toLowerCase(); + if (nameLower === "frischhefe" || nameLower === "trockenhefe" || + nameLower === "fresh yeast" || nameLower === "dry yeast") { ids[`${listIndex}-${ingredientIndex}`] = yeastCounter++; } } @@ -408,9 +409,9 @@ span
{@html adjust_amount(item.amount, multiplier)} {item.unit}
{@html item.name.replace("{{multiplier}}", isNaN(parseFloat(item.amount)) ? multiplier : multiplier * parseFloat(item.amount))} - {#if item.name === "Frischhefe" || item.name === "Trockenhefe" || item.name === "Fresh Yeast" || item.name === "Dry Yeast"} + {#if item.name.toLowerCase() === "frischhefe" || item.name.toLowerCase() === "trockenhefe" || item.name.toLowerCase() === "fresh yeast" || item.name.toLowerCase() === "dry yeast"} {@const yeastId = yeastIds[`${listIndex}-${ingredientIndex}`] ?? 0} - + {/if}
{/each} diff --git a/src/routes/[recipeLang]/[name]/+page.ts b/src/routes/[recipeLang]/[name]/+page.ts index 00cd380..b4d1d84 100644 --- a/src/routes/[recipeLang]/[name]/+page.ts +++ b/src/routes/[recipeLang]/[name]/+page.ts @@ -38,9 +38,10 @@ export async function load({ fetch, params, url}) { for (let ingredientIndex = 0; ingredientIndex < list.list.length; ingredientIndex++) { const ingredient = list.list[ingredientIndex]; - // Check if this is a yeast ingredient (both German and English names) - const isFreshYeast = ingredient.name === "Frischhefe" || ingredient.name === "Fresh Yeast"; - const isDryYeast = ingredient.name === "Trockenhefe" || ingredient.name === "Dry Yeast"; + // Check if this is a yeast ingredient (both German and English names, case-insensitive) + const nameLower = ingredient.name.toLowerCase(); + const isFreshYeast = nameLower === "frischhefe" || nameLower === "fresh yeast"; + const isDryYeast = nameLower === "trockenhefe" || nameLower === "dry yeast"; if (isFreshYeast || isDryYeast) { // Check if this yeast should be toggled @@ -57,7 +58,7 @@ export async function load({ fetch, params, url}) { if (isFreshYeast) { // Convert fresh yeast to dry yeast - newName = isEnglish ? "Dry Yeast" : "Trockenhefe"; + newName = isEnglish ? "Dry yeast" : "Trockenhefe"; if (originalUnit === "Prise") { // "1 Prise Frischhefe" → "1 Prise Trockenhefe" @@ -74,7 +75,7 @@ export async function load({ fetch, params, url}) { } } else if (isDryYeast) { // Convert dry yeast to fresh yeast - newName = isEnglish ? "Fresh Yeast" : "Frischhefe"; + newName = isEnglish ? "Fresh yeast" : "Frischhefe"; if (originalUnit === "Prise") { // "1 Prise Trockenhefe" → "1 g Frischhefe"