feat(i18n): översätt kvarvarande vyer + härda vakten (audit-backlog)

- API: översatt title/displayName/toName läggs nu bredvid Sv-fälten i favoriter,
  receptvarianter, /scaled, skapar-profiler, topplistor, memory-impact,
  substitutions — samt de denormaliserade titlarna (min dag, historik, matlådor,
  matlåde-förslag, veckoplan) via nullable recipeId med svensk fallback.
  10 endpoints, batchade resolvers (ett anrop per endpoint).
- Mobil: konsumerar de nya fälten med ?? Sv-fallback (swap-meal, sparade recept,
  varianter, min dag, logg, matlådor, veckoplan, inköpslista). Hårdkodade
  strängar -> t() (kitchen, scan-review, register, recept protein/Skapat av);
  decimalkomma -> Intl.NumberFormat. Allergen-etiketter -> t() (+5 nya nycklar).
  11 nya nycklar i alla 12 språk.
- i18n-vakt härdad: fångar nu hårdkodad svenska i prop={`...`}-mallliteraler
  (blind fläck förr). Verifierat att den fäller men inte ger falska positiv.
- whySv var redan lokaliserad (buildWhy med språktagg) - orörd.
- typecheck grönt (alla paket), vakt grön (603 nycklar).

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude
2026-08-21 20:07:00 +00:00
parent f71b717284
commit 18388bb31c
31 changed files with 338 additions and 66 deletions
+12 -1
View File
@@ -590,5 +590,16 @@
"season.alla-hjartans-dag": "Valentine's Day",
"season.halloween": "Halloween",
"season.oktoberfest": "Oktoberfest",
"season.eid": "Eid al-Fitr"
"season.eid": "Eid al-Fitr",
"kitchen.itemCount": "{count} items",
"kitchen.selectedCount": "{count} selected",
"kitchen.removeSelected": "Remove selected ({count})",
"scan.review.possibleDuplicate": "Seems to already exist: {name}",
"auth.passwordHint": "at least 8 characters",
"recipe.proteinTag": "{g} g protein",
"onboarding.allergen.celery": "Celery",
"onboarding.allergen.mustard": "Mustard",
"onboarding.allergen.sulphites": "Sulphites",
"onboarding.allergen.lupin": "Lupin",
"onboarding.allergen.molluscs": "Molluscs"
}