i18n(säsong+kock): lokalisera säsongsnamn (12 språk), snyggare tidshint, rensa dubbletter

- Säsong/högtidschippen på "Vad ska vi äta?" visade marknadens namn på svenska
  även för icke-svenska språk (SE-marknadens event saknar nameLocalized). Nu
  renderas de via i18n-nyckeln season.<slug> (t med defaultValue -> serverns namn
  som fallback för egennamn m.m.). SE-marknadens 14 event översatta i alla 12
  språk; egennamn (Navidad, Midsommar, Lucia...) behålls, beskrivande översätts
  (Kräftskiva, Skolstart, Grillsäsong...).
- Kok-läget: den boxade ⏱-rutan (såg ut som en knapp/timer och kunde misstas för
  en riktig timer) ersatt med en diskret rad "⏱ Ungefär {time}". Döda nycklar
  cooking.timer/timerDone/timerRunning borttagna; cooking.timerHint -> approxTime.
- Städat 2 dubblettnycklar i alla 12 locale-filer (mealbox.eatBy, common.remove)
  som låg kvar sedan tidigare leveranser (i18next tog sista värdet ändå).
- Vakt + typecheck gröna. 591 nycklar.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude
2026-08-21 14:37:26 +00:00
parent e7657d0153
commit d22f3d746b
14 changed files with 202 additions and 102 deletions
+9 -5
View File
@@ -175,11 +175,15 @@ export default function WhatToEatScreen() {
<>
<Spacer size={spacing.xs} />
<Row style={{ flexWrap: "wrap" }}>
{query.data.context.activeHolidays.map((h) => (
<Pressable key={h.slug} onPress={() => selectHoliday(h.slug)}>
<Tag label={`🎉 ${h.name}`} tone={holiday === h.slug ? "success" : "accent"} />
</Pressable>
))}
{query.data.context.activeHolidays.map((h) => {
// Säsongsnamn på användarens språk; fallback till serverns namn (egennamn m.m.).
const name = t(`season.${h.slug}`, { defaultValue: h.name });
return (
<Pressable key={h.slug} onPress={() => selectHoliday(h.slug)}>
<Tag label={`🎉 ${name}`} tone={holiday === h.slug ? "success" : "accent"} />
</Pressable>
);
})}
</Row>
</>
)}
+1 -13
View File
@@ -287,19 +287,7 @@ export default function CookingScreen() {
)}
{step?.timerSeconds != null && (
<View
style={{
backgroundColor: colors.primarySoft,
padding: spacing.md,
borderRadius: 16,
alignItems: "center",
}}
>
<Text style={{ fontSize: 22, fontWeight: "700", color: colors.primaryDark }}>
{formatTime(step.timerSeconds)}
</Text>
<Small>{t("cooking.timerHint")}</Small>
</View>
<Small> {t("cooking.approxTime", { time: formatTime(step.timerSeconds) })}</Small>
)}
<Small>{t("cooking.keepAwake")}</Small>
</View>