feat(items): add German product names for in-store navigation
All checks were successful
Build and Deploy citti / build-and-deploy (push) Successful in 47s

Each item now shows the German name (de field) below the Danish name
so it's easier to find products on shelves in Citti Flensburg.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Henrik Jess Nielsen
2026-06-06 01:33:25 +02:00
parent ba936424af
commit 1570b6eceb
2 changed files with 54 additions and 52 deletions

104
app.py
View File

@@ -15,76 +15,76 @@ DB = str(DATA_DIR / "data.db")
SECTIONS = [
{"id": "koed", "emoji": "🥩", "title": "Kød & fisk", "est": 1580, "varer": [
{"key": "entrecote", "name": "Entrecote ½ kg", "note": "Frisk sydamerikansk", "qty": "6 × ½ kg", "est": 605.94, "badges": ["card"]},
{"key": "nakkekoteletter", "name": "Nakkekoteletter ½ kg", "note": "Med/uden krydderi", "qty": "6 × ½ kg", "est": 191.94},
{"key": "kyllingebryst", "name": "Kyllingebryst ½ kg", "note": "Texas-marinade", "qty": "6 × ½ kg", "est": 359.94},
{"key": "hakket-oksekoed", "name": "Hakket oksekød", "note": "Køddisk — spørg personalet", "qty": "3 kg", "est": 240},
{"key": "rumpsteak", "name": "Rumpsteak ½ kg", "note": "Modnet, tyske kvier", "qty": "1 × ½ kg", "est": 167.99},
{"key": "lakseside", "name": "Lakseside premium", "note": "15,99/100g · tag ~700g", "qty": "~700g", "est": 112},
{"key": "grillpoelser", "name": "Gerstand grillpølser", "note": "10 stk. à 100g", "qty": "1 kg", "est": 74.99},
{"key": "bacon", "name": "Steinemann bacon i skiver","note": "Røget · fryseegnet", "qty": "1 kg", "est": 74.99},
{"key": "entrecote", "name": "Entrecote ½ kg", "de": "Entrecôte ½ kg", "note": "Frisk sydamerikansk", "qty": "6 × ½ kg", "est": 605.94, "badges": ["card"]},
{"key": "nakkekoteletter", "name": "Nakkekoteletter ½ kg", "de": "Schweinenackenkoteletten ½ kg", "note": "Med/uden krydderi", "qty": "6 × ½ kg", "est": 191.94},
{"key": "kyllingebryst", "name": "Kyllingebryst ½ kg", "de": "Hähnchenbrustfilet ½ kg", "note": "Texas-marinade", "qty": "6 × ½ kg", "est": 359.94},
{"key": "hakket-oksekoed", "name": "Hakket oksekød", "de": "Rinderhackfleisch", "note": "Køddisk — spørg personalet", "qty": "3 kg", "est": 240},
{"key": "rumpsteak", "name": "Rumpsteak ½ kg", "de": "Rumpsteak ½ kg", "note": "Modnet, tyske kvier", "qty": "1 × ½ kg", "est": 167.99},
{"key": "lakseside", "name": "Lakseside premium", "de": "Lachsseite premium", "note": "15,99/100g · tag ~700g", "qty": "~700g", "est": 112},
{"key": "grillpoelser", "name": "Gerstand grillpølser", "de": "Gerstand Grillwürste", "note": "10 stk. à 100g", "qty": "1 kg", "est": 74.99},
{"key": "bacon", "name": "Steinemann bacon i skiver","de": "Steinemann Bauchspeck in Scheiben", "note": "Røget · fryseegnet", "qty": "1 kg", "est": 74.99},
]},
{"id": "frost", "emoji": "🧊", "title": "Frostgrønt · 3 kg poser", "est": 100, "varer": [
{"key": "wok-mix", "name": "Wok-mix blandede grøntsager", "qty": "3 kg", "est": 40},
{"key": "aerter", "name": "Ærter", "qty": "3 kg", "est": 30},
{"key": "broccoli", "name": "Broccoli", "qty": "3 kg", "est": 35},
{"key": "frost-andet", "name": "Hvad der ellers frister", "note": "Tjek frysedisken", "qty": "", "est": 0},
{"key": "wok-mix", "name": "Wok-mix blandede grøntsager", "de": "Wok-Mix Gemüsemischung", "qty": "3 kg", "est": 40},
{"key": "aerter", "name": "Ærter", "de": "Erbsen", "qty": "3 kg", "est": 30},
{"key": "broccoli", "name": "Broccoli", "de": "Brokkoli", "qty": "3 kg", "est": 35},
{"key": "frost-andet", "name": "Hvad der ellers frister", "de": "Was sonst verlockend ist", "note": "Tjek frysedisken", "qty": "", "est": 0},
]},
{"id": "mejeri", "emoji": "🧀", "title": "Mejeri, ost & frost", "est": 185, "varer": [
{"key": "feta", "name": "Greco Schaffeta feta 150g", "note": "70% fåremælk", "qty": "3 stk.", "est": 44.97},
{"key": "frutti-mare", "name": "Frutti di Mare", "note": "Rejer, muslinger, blæksprutte", "qty": "1 kg", "est": 59.99},
{"key": "tigerrejer", "name": "Sorte tigerrejer frost", "note": "Rå, pillede · wok/grill", "qty": "1 kg", "est": 79.99},
{"key": "feta", "name": "Greco Schaffeta feta 150g", "de": "Greco Schaffeta Feta 150g", "note": "70% fåremælk", "qty": "3 stk.", "est": 44.97},
{"key": "frutti-mare", "name": "Frutti di Mare", "de": "Frutti di Mare", "note": "Rejer, muslinger, blæksprutte", "qty": "1 kg", "est": 59.99},
{"key": "tigerrejer", "name": "Sorte tigerrejer frost", "de": "Schwarze Tigergarnelen TK", "note": "Rå, pillede · wok/grill", "qty": "1 kg", "est": 79.99},
]},
{"id": "pasta", "emoji": "🍝", "title": "Pasta frisk køl · Gut & Günstig ~800g", "est": 160, "varer": [
{"key": "tortelloni-skinke", "name": "Tortelloni Skinke", "qty": "2 stk.", "est": 55},
{"key": "tortelloni-spinat", "name": "Tortelloni Spinat & ricotta", "qty": "2 stk.", "est": 55},
{"key": "tortelloni-valg", "name": "Tortelloni valgfri variant", "note": "Svampe, tomat-mozzarella o.l.", "qty": "2 stk.", "est": 55},
{"key": "tortelloni-skinke", "name": "Tortelloni Skinke", "de": "Tortelloni Schinken", "qty": "2 stk.", "est": 55},
{"key": "tortelloni-spinat", "name": "Tortelloni Spinat & ricotta", "de": "Tortelloni Spinat & Ricotta", "qty": "2 stk.", "est": 55},
{"key": "tortelloni-valg", "name": "Tortelloni valgfri variant", "de": "Tortelloni nach Wahl", "note": "Svampe, tomat-mozzarella o.l.", "qty": "2 stk.", "est": 55},
]},
{"id": "groent", "emoji": "🥗", "title": "Grønt, olier & tørvarer", "est": 245, "varer": [
{"key": "avocado", "name": "Avocado Hass", "note": "Fra Peru, SanLucar", "qty": "5 stk.", "est": 74.95},
{"key": "olivenolie", "name": "Bertolli olivenolie extra vergine", "qty": "1L", "est": 99.99},
{"key": "mutti", "name": "Mutti passata", "note": "Natur eller basilikum","qty": "3 × 700g", "est": 44.97},
{"key": "rustichella", "name": "Rustichella d'Abruzzo pasta", "qty": "4 × 500g", "est": 75.96},
{"key": "avocado", "name": "Avocado Hass", "de": "Avocado Hass", "note": "Fra Peru, SanLucar", "qty": "5 stk.", "est": 74.95},
{"key": "olivenolie", "name": "Bertolli olivenolie extra vergine", "de": "Bertolli Olivenöl extra vergine", "qty": "1L", "est": 99.99},
{"key": "mutti", "name": "Mutti passata", "de": "Mutti Passata", "note": "Natur eller basilikum", "qty": "3 × 700g", "est": 44.97},
{"key": "rustichella", "name": "Rustichella d'Abruzzo pasta", "de": "Rustichella d'Abruzzo Pasta", "qty": "4 × 500g", "est": 75.96},
]},
{"id": "konserves", "emoji": "🥫", "title": "Konserves — tomat & basis", "est": 185, "varer": [
{"key": "hakkede-tomater", "name": "Hakkede tomater 400g", "qty": "8 dåser", "est": 50},
{"key": "flaede-tomater", "name": "Flåede tomater 400g", "qty": "4 dåser", "est": 25},
{"key": "tomatpure", "name": "Tomatpuré / koncentrat", "qty": "4 stk.", "est": 35},
{"key": "tun", "name": "Tun i olie 80g", "qty": "6 dåser", "est": 47},
{"key": "majs", "name": "Majs 340g", "qty": "4 dåser", "est": 28},
{"key": "hakkede-tomater", "name": "Hakkede tomater 400g", "de": "Gehackte Tomaten 400g", "qty": "8 dåser", "est": 50},
{"key": "flaede-tomater", "name": "Flåede tomater 400g", "de": "Geschälte Tomaten 400g", "qty": "4 dåser", "est": 25},
{"key": "tomatpure", "name": "Tomatpuré / koncentrat", "de": "Tomatenmark / -konzentrat", "qty": "4 stk.", "est": 35},
{"key": "tun", "name": "Tun i olie 80g", "de": "Thunfisch in Öl 80g", "qty": "6 dåser", "est": 47},
{"key": "majs", "name": "Majs 340g", "de": "Mais 340g", "qty": "4 dåser", "est": 28},
]},
{"id": "indisk", "emoji": "🌶️", "title": "Indisk & karry", "est": 160, "varer": [
{"key": "tikka-masala", "name": "Tikka masala sauce", "note": "350500g · Taste of India", "qty": "5 stk.", "est": 70},
{"key": "karrypasta-roed", "name": "Karrypasta rød 50g", "qty": "2 stk.", "est": 20},
{"key": "karrypasta-groen", "name": "Karrypasta grøn 50g", "qty": "2 stk.", "est": 20},
{"key": "karrypasta-gul", "name": "Karrypasta gul/mild", "qty": "2 stk.", "est": 20},
{"key": "mango-chutney", "name": "Mango chutney 300g", "qty": "2 stk.", "est": 24},
{"key": "basmatiris", "name": "Basmatiris 1 kg", "qty": "2 stk.", "est": 28},
{"key": "tikka-masala", "name": "Tikka masala sauce", "de": "Tikka Masala Sauce", "note": "350500g · Taste of India", "qty": "5 stk.", "est": 70},
{"key": "karrypasta-roed", "name": "Karrypasta rød 50g", "de": "Rote Currypaste 50g", "qty": "2 stk.", "est": 20},
{"key": "karrypasta-groen", "name": "Karrypasta grøn 50g", "de": "Grüne Currypaste 50g", "qty": "2 stk.", "est": 20},
{"key": "karrypasta-gul", "name": "Karrypasta gul/mild", "de": "Gelbe Currypaste/mild", "qty": "2 stk.", "est": 20},
{"key": "mango-chutney", "name": "Mango chutney 300g", "de": "Mango-Chutney 300g", "qty": "2 stk.", "est": 24},
{"key": "basmatiris", "name": "Basmatiris 1 kg", "de": "Basmatireis 1 kg", "qty": "2 stk.", "est": 28},
]},
{"id": "mex", "emoji": "🌮", "title": "Mexicansk & asiatisk", "est": 185, "varer": [
{"key": "tacokrydderi", "name": "Tacokrydderi pakke", "qty": "6 stk.", "est": 33},
{"key": "jalapenos", "name": "Jalapeños på glas 200g", "qty": "2 stk.", "est": 16},
{"key": "salsa", "name": "Salsa / tomatdip 300g", "qty": "2 stk.", "est": 19},
{"key": "tacoshells", "name": "Tacoshells / tortilla wraps","qty": "2 stk.", "est": 24},
{"key": "kokosmalk", "name": "Kokosmælk 400ml", "qty": "6 dåser", "est": 47},
{"key": "sojasauce", "name": "Sojasauce 250ml", "qty": "1 stk.", "est": 10},
{"key": "bambusskud", "name": "Bambusskud / vandkastanjer","qty": "2 dåser", "est": 14},
{"key": "tacokrydderi", "name": "Tacokrydderi pakke", "de": "Taco-Gewürzmischung", "qty": "6 stk.", "est": 33},
{"key": "jalapenos", "name": "Jalapeños på glas 200g", "de": "Jalapeños im Glas 200g", "qty": "2 stk.", "est": 16},
{"key": "salsa", "name": "Salsa / tomatdip 300g", "de": "Salsa / Tomaten-Dip 300g", "qty": "2 stk.", "est": 19},
{"key": "tacoshells", "name": "Tacoshells / tortilla wraps","de": "Taco-Shells / Tortilla-Wraps","qty": "2 stk.", "est": 24},
{"key": "kokosmalk", "name": "Kokosmælk 400ml", "de": "Kokosmilch 400ml", "qty": "6 dåser", "est": 47},
{"key": "sojasauce", "name": "Sojasauce 250ml", "de": "Sojasoße 250ml", "qty": "1 stk.", "est": 10},
{"key": "bambusskud", "name": "Bambusskud / vandkastanjer","de": "Bambussprossen / Wasserkastanien","qty": "2 dåser", "est": 14},
]},
{"id": "drikke", "emoji": "🍺", "title": "Drikkevarer", "est": 530, "varer": [
{"key": "carlsberg", "name": "Carlsberg / Carls Special 0,33L", "qty": "24 stk.", "est": 79, "badges": ["kasse"]},
{"key": "pepsi-max", "name": "Pepsi Max 1,5L", "qty": "6 stk.", "est": 49.99, "badges": ["kasse"]},
{"key": "faxe-kondi", "name": "Faxe Kondi Appelsin 0,33L", "qty": "24 stk.", "est": 54.99, "badges": ["kasse"]},
{"key": "kuehling-vin", "name": "Kühling hvid-/rosévin 0,75L", "qty": "4 stk.", "est": 159.96, "badges": ["card"]},
{"key": "grauburgunder", "name": "Grauburgunder hvidvin 1,5L", "qty": "1 stk.", "est": 59.99, "badges": ["card"]},
{"key": "kaffe", "name": "Eduscho Caffè Crema hele bønner", "qty": "1 kg", "est": 104.99},
{"key": "carlsberg", "name": "Carlsberg / Carls Special 0,33L", "de": "Carlsberg / Carls Special 0,33L", "qty": "24 stk.", "est": 79, "badges": ["kasse"]},
{"key": "pepsi-max", "name": "Pepsi Max 1,5L", "de": "Pepsi Max 1,5L", "qty": "6 stk.", "est": 49.99, "badges": ["kasse"]},
{"key": "faxe-kondi", "name": "Faxe Kondi Appelsin 0,33L", "de": "Faxe Kondi Orange 0,33L", "qty": "24 stk.", "est": 54.99, "badges": ["kasse"]},
{"key": "kuehling-vin", "name": "Kühling hvid-/rosévin 0,75L", "de": "Kühling Weiß-/Roséwein 0,75L", "qty": "4 stk.", "est": 159.96, "badges": ["card"]},
{"key": "grauburgunder", "name": "Grauburgunder hvidvin 1,5L", "de": "Grauburgunder Weißwein 1,5L", "qty": "1 stk.", "est": 59.99, "badges": ["card"]},
{"key": "kaffe", "name": "Eduscho Caffè Crema hele bønner", "de": "Eduscho Caffè Crema ganze Bohnen", "qty": "1 kg", "est": 104.99},
]},
{"id": "hus", "emoji": "🏠", "title": "Husholdning & skafferi", "est": 535, "varer": [
{"key": "ariel", "name": "Ariel vaskemiddel", "note": "100111 vaske", "qty": "1 stk.", "est": 199.90},
{"key": "finish", "name": "Finish opvasketabs", "note": "64 stk.", "qty": "1 stk.", "est": 59.99},
{"key": "cashew", "name": "BASE Culinar cashewnødder", "qty": "1 kg", "est": 79.99},
{"key": "nutella", "name": "Nutella 1 kg glas", "qty": "1 stk.", "est": 49.99, "badges": ["card"]},
{"key": "biscoff", "name": "Lotus Biscoff smørepålæg 1,6 kg", "qty": "1 stk.", "est": 99.99, "badges": ["card"]},
{"key": "haribo", "name": "Haribo vingummi / lakrids", "note": "8001000g", "qty": "1 stk.", "est": 44.99},
{"key": "ariel", "name": "Ariel vaskemiddel", "de": "Ariel Waschmittel", "note": "100111 vaske", "qty": "1 stk.", "est": 199.90},
{"key": "finish", "name": "Finish opvasketabs", "de": "Finish Spülmaschinentabs", "note": "64 stk.", "qty": "1 stk.", "est": 59.99},
{"key": "cashew", "name": "BASE Culinar cashewnødder", "de": "BASE Culinar Cashewkerne", "qty": "1 kg", "est": 79.99},
{"key": "nutella", "name": "Nutella 1 kg glas", "de": "Nutella 1 kg Glas", "qty": "1 stk.", "est": 49.99, "badges": ["card"]},
{"key": "biscoff", "name": "Lotus Biscoff smørepålæg 1,6 kg", "de": "Lotus Biscoff Brotaufstrich 1,6 kg", "qty": "1 stk.", "est": 99.99, "badges": ["card"]},
{"key": "haribo", "name": "Haribo vingummi / lakrids", "de": "Haribo Weingummi / Lakritz", "note": "8001000g", "qty": "1 stk.", "est": 44.99},
]},
]