Lots of improvements
Some checks failed
CI / Python (lint + test) (push) Failing after 1m39s
CI / Frontend (lint + typecheck) (push) Failing after 1m49s
CI / Rust (lint + test) (push) Failing after 1m50s
Build and publish Docker image / build-and-push (push) Failing after 3m9s

This commit is contained in:
Andras Schmelczer 2026-04-04 10:45:48 +01:00
parent 3853b5dce7
commit b94cf17d75
33 changed files with 2587 additions and 1866 deletions

View file

@ -5,9 +5,9 @@ const de: Translations = {
common: {
save: 'Speichern',
cancel: 'Abbrechen',
close: 'Schlie\u00DFen',
delete: 'L\u00F6schen',
open: '\u00D6ffnen',
close: 'Schließen',
delete: 'Löschen',
open: 'Öffnen',
share: 'Teilen',
copy: 'Kopieren',
copied: 'Kopiert!',
@ -25,10 +25,10 @@ const de: Translations = {
area: 'Gebiet',
properties: 'Immobilien',
postcode: 'Postleitzahl',
noAreaSelected: 'Kein Gebiet ausgew\u00E4hlt',
noAreaSelected: 'Kein Gebiet ausgewählt',
noAreaSelectedDesc:
'Klicke auf ein farbiges Gebiet auf der Karte, um Kriminalit\u00E4t, Schulen, Preise und mehr zu sehen',
clickForDetails: 'F\u00FCr Details klicken',
'Klicke auf ein farbiges Gebiet auf der Karte, um Kriminalität, Schulen, Preise und mehr zu sehen',
clickForDetails: 'Für Details klicken',
property: 'Immobilie',
propertiesPlural: 'Immobilien',
},
@ -36,7 +36,7 @@ const de: Translations = {
// ── Header / Nav ───────────────────────────────────
header: {
appName: 'Perfect Postcode',
dashboard: '\u00DCbersicht',
dashboard: 'Übersicht',
learn: 'Infos',
pricing: 'Preise',
inviteFriends: 'Freunde einladen',
@ -47,8 +47,8 @@ const de: Translations = {
exportLabel: 'Exportieren',
exporting: 'Wird exportiert...',
exportToExcel: 'Als Excel exportieren',
openMenu: 'Men\u00FC \u00F6ffnen',
closeMenu: 'Men\u00FC schlie\u00DFen',
openMenu: 'Menü öffnen',
closeMenu: 'Menü schließen',
},
// ── User Menu ──────────────────────────────────────
@ -63,7 +63,7 @@ const de: Translations = {
// ── Mobile Menu ────────────────────────────────────
mobileMenu: {
menu: 'Men\u00FC',
menu: 'Menü',
home: 'Startseite',
},
@ -71,9 +71,9 @@ const de: Translations = {
auth: {
logIn: 'Anmelden',
createAccount: 'Konto erstellen',
resetPassword: 'Passwort zur\u00FCcksetzen',
resetPassword: 'Passwort zurücksetzen',
valueProp:
'Speichere Suchen, merke dir Immobilien und mach dort weiter, wo du aufgeh\u00F6rt hast.',
'Speichere Suchen, merke dir Immobilien und mach dort weiter, wo du aufgehört hast.',
continueWithGoogle: 'Weiter mit Google',
email: 'E-Mail',
emailPlaceholder: 'du@beispiel.de',
@ -81,24 +81,24 @@ const de: Translations = {
passwordPlaceholderRegister: 'Mind. 8 Zeichen',
passwordPlaceholderLogin: 'Dein Passwort',
forgotPassword: 'Passwort vergessen?',
resetSent: 'Pr\u00FCfe deine E-Mails f\u00FCr einen Link zum Zur\u00FCcksetzen.',
resetSent: 'Prüfe deine E-Mails für einen Link zum Zurücksetzen.',
pleaseWait: 'Bitte warten...',
sendResetLink: 'Link zum Zur\u00FCcksetzen senden',
backToLogin: 'Zur\u00FCck zur Anmeldung',
sendResetLink: 'Link zum Zurücksetzen senden',
backToLogin: 'Zurück zur Anmeldung',
},
// ── Upgrade Modal ──────────────────────────────────
upgrade: {
title: 'Ganz England entdecken',
description:
'Du erkundest gerade das Demogebiet. Erhalte lebenslangen Zugang zu jeder Postleitzahl, jedem Filter, jedem Viertel. Eine Zahlung, f\u00FCr immer.',
'Du erkundest gerade das Demogebiet. Erhalte lebenslangen Zugang zu jeder Postleitzahl, jedem Filter, jedem Viertel. Eine Zahlung, für immer.',
free: 'Kostenlos',
once: '/einmalig',
freeForEarly: 'Kostenlos f\u00FCr Fr\u00FChnutzer. Keine Kreditkarte erforderlich.',
oneTimePayment: 'Einmalzahlung. Lebenslanger Zugang. 30 Tage Geld-zur\u00FCck-Garantie.',
freeForEarly: 'Kostenlos für Frühnutzer. Keine Kreditkarte erforderlich.',
oneTimePayment: 'Einmalzahlung. Lebenslanger Zugang. 30 Tage Geld-zurück-Garantie.',
redirecting: 'Weiterleitung...',
claimFreeAccess: 'Kostenlosen Zugang sichern',
upgradeFor: 'Upgrade f\u00FCr {{price}}',
upgradeFor: 'Upgrade für {{price}}',
registerAndUpgrade: 'Registrieren & Upgraden',
alreadyHaveAccount: 'Bereits ein Konto? Anmelden',
continueWithDemo: 'Mit Demo fortfahren',
@ -128,83 +128,88 @@ const de: Translations = {
// ── Filters ────────────────────────────────────────
filters: {
activeFilters: 'Aktive Filter',
addFilter: 'Filter hinzuf\u00FCgen',
addFilter: 'Filter hinzufügen',
historical: 'Historisch',
buy: 'Kaufen',
rent: 'Mieten',
findingPerfectPostcode: 'Die perfekte Postleitzahl finden',
addFiltersHint:
'F\u00FCge unten Filter hinzu, um die Karte auf Gebiete einzugrenzen, die deinen Kriterien entsprechen',
'Füge unten Filter hinzu, um die Karte auf Gebiete einzugrenzen, die deinen Kriterien entsprechen',
upgradePrompt:
'Sieh Kriminalit\u00E4t, Schulen, L\u00E4rm, Breitband und 50+ weitere Filter f\u00FCr ganz England.',
'Sieh Kriminalität, Schulen, Lärm, Breitband und 50+ weitere Filter für ganz England.',
oneTimeLifetime: 'Einmalzahlung, lebenslanger Zugang.',
upgradeToFullMap: 'Zur Vollversion upgraden',
chooseFilters:
'W\u00E4hle die Filter, die dir wichtig sind. Die Karte aktualisiert sich sofort.',
'Wähle die Filter, die dir wichtig sind. Die Karte aktualisiert sich sofort.',
searchFeatures: 'Filter durchsuchen...',
noMatchingFeatures: 'Keine passenden Filter',
tryDifferentSearch: 'Versuche einen anderen Suchbegriff',
allFeaturesActive: 'Alle Filter sind aktiv',
removeFilterHint: 'Entferne einen Filter, um verf\u00FCgbare Merkmale zu sehen',
removeFilterHint: 'Entferne einen Filter, um verfügbare Merkmale zu sehen',
featureInfo: 'Filterinfo',
replayTutorial: 'Interaktives Tutorial erneut abspielen',
clearAll: 'Alle löschen',
clearAllTitle: 'Alle Filter löschen?',
clearAllSavePrompt: 'Möchtest du deine aktuellen Filter vor dem Löschen speichern?',
saveAndClear: 'Speichern & löschen',
clearWithoutSaving: 'Ohne Speichern löschen',
},
// ── Philosophy Popup ───────────────────────────────
philosophy: {
intro:
'Beginne mit deinen Muss-Kriterien, dann f\u00FCge Kann-Kriterien hinzu. Die Karte grenzt sich ein, wenn du Filter hinzuf\u00FCgst. Die verbleibenden Gebiete sind deine besten Treffer.',
'Beginne mit deinen Muss-Kriterien, dann füge Kann-Kriterien hinzu. Die Karte grenzt sich ein, wenn du Filter hinzufügst. Die verbleibenden Gebiete sind deine besten Treffer.',
step1Title: 'Budget und Grundlagen',
step1Desc: '(Preisrahmen, Wohnfl\u00E4che, Immobilientyp)',
step1Desc: '(Preisrahmen, Wohnfläche, Immobilientyp)',
step2Title: 'Pendelweg',
step2Desc: '(Fahrzeit zum Arbeitsplatz mit Auto, Fahrrad oder \u00D6PNV)',
step2Desc: '(Fahrzeit zum Arbeitsplatz mit Auto, Fahrrad oder ÖPNV)',
step3Title: 'Sicherheit',
step3Desc: '(Kriminalit\u00E4tsraten, L\u00E4rmpegel, Bodenstabilit\u00E4t)',
step3Desc: '(Kriminalitätsraten, Lärmpegel, Bodenstabilität)',
step4Title: 'Schulen',
step4Desc: '(nahe gelegene Schulen mit Ofsted-Bewertung Gut oder Hervorragend)',
step5Title: 'Lebensstil',
step5Desc: '(Restaurants, Parks, Breitbandgeschwindigkeit)',
step6Title: 'Energie',
step6Desc: '(EPC-Bewertungen, D\u00E4mmung, Heizkosten)',
tip: 'Tipp: Wenn nichts passt, lockere eine Bedingung nach der anderen, um zu sehen, welcher Kompromiss die meisten Optionen er\u00F6ffnet.',
step6Desc: '(EPC-Bewertungen, Dämmung, Heizkosten)',
tip: 'Tipp: Wenn nichts passt, lockere eine Bedingung nach der anderen, um zu sehen, welcher Kompromiss die meisten Optionen eröffnet.',
},
// ── Travel Time ────────────────────────────────────
travel: {
travelTime: 'Reisezeit ({{mode}})',
maxTime: 'Maximale Zeit',
selectDestination: 'Ziel ausw\u00E4hlen...',
selectDestination: 'Ziel auswählen...',
bestCase: 'Bestfall',
bestCaseTitle: 'Bestm\u00F6gliche Reisezeit',
bestCaseTitle: 'Bestmögliche Reisezeit',
bestCaseDesc:
'Verwendet die schnellste realistische Reisezeit (bei guter Abfahrtsplanung und guten Anschl\u00FCssen). Standard ist der <strong>Median</strong>, der eine typische Fahrt unabh\u00E4ngig vom Abfahrtszeitpunkt darstellt.',
'Verwendet die schnellste realistische Reisezeit (bei guter Abfahrtsplanung und guten Anschlüssen). Standard ist der <strong>Median</strong>, der eine typische Fahrt unabhängig vom Abfahrtszeitpunkt darstellt.',
previewOnMap: 'Auf Karte anzeigen',
stopPreviewing: 'Vorschau beenden',
removeTravelTime: 'Reisezeit entfernen',
addTravelTime: '{{mode}}-Reisezeit hinzuf\u00FCgen',
clearDestination: 'Ziel l\u00F6schen',
addTravelTime: '{{mode}}-Reisezeit hinzufügen',
clearDestination: 'Ziel löschen',
typeToFilter: 'Tippen zum Filtern...',
noDestinations: 'Keine Ziele gefunden',
modeCar: 'Auto',
modeBicycle: 'Fahrrad',
modeWalking: 'Zu Fu\u00DF',
modeTransit: '\u00D6PNV',
modeCarDesc: 'Fahrzeit \u00FCber die schnellste Stra\u00DFenroute',
modeWalking: 'Zu Fuß',
modeTransit: 'ÖPNV',
modeCarDesc: 'Fahrzeit über die schnellste Straßenroute',
modeBicycleDesc: 'Radfahrzeit auf fahrradfreundlichen Strecken',
modeWalkingDesc: 'Gehzeit \u00FCber Fu\u00DFwege und B\u00FCrgersteige',
modeWalkingDesc: 'Gehzeit über Fußwege und Bürgersteige',
modeTransitDesc: 'Reisezeit mit Bahn, U-Bahn und Bus',
},
// ── Travel Time Info Popup ─────────────────────────
travelInfo: {
transitDesc:
' mit \u00F6ffentlichen Verkehrsmitteln (Bus, Bahn, U-Bahn). Die Zeiten werden \u00FCber ein typisches Werktags-Morgenfenster berechnet.',
' mit öffentlichen Verkehrsmitteln (Bus, Bahn, U-Bahn). Die Zeiten werden über ein typisches Werktags-Morgenfenster berechnet.',
carDesc:
' mit dem Auto, basierend auf typischen Stra\u00DFengeschwindigkeiten und dem Stra\u00DFennetz.',
' mit dem Auto, basierend auf typischen Straßengeschwindigkeiten und dem Straßennetz.',
bicycleDesc: ' mit dem Fahrrad, auf fahrradfreundlichen Strecken.',
walkingDesc: ' zu Fu\u00DF, \u00FCber Fu\u00DFwege und B\u00FCrgersteige.',
walkingDesc: ' zu Fuß, über Fußwege und Bürgersteige.',
mainDesc:
'Zeigt, wie lange es dauert, das ausgew\u00E4hlte Ziel von jedem Gebiet aus zu erreichen',
'Zeigt, wie lange es dauert, das ausgewählte Ziel von jedem Gebiet aus zu erreichen',
sliderHint:
'Verwende den Schieberegler, um deine maximale Pendelzeit festzulegen.',
},
@ -214,21 +219,26 @@ const de: Translations = {
describeIdealArea: 'Beschreibe dein Wunschgebiet mit KI',
aiSearch: 'KI-Suche',
describeHint: 'beschreibe, wonach du suchst',
placeholder: 'z.\u00A0B. ruhige Gegend, unter \u00A3400k, nahe guten Schulen...',
placeholder: 'z. B. ruhige Gegend, unter £400k, nahe guten Schulen...',
example1: 'Sichere Gegend nahe guten Schulen',
example2: '30 Min. Pendelweg zu Kings Cross, unter \u00A3500k',
example2: '30 Min. Pendelweg zu Kings Cross, unter £500k',
example3: 'Ruhiges Dorf, 3 Schlafzimmer, schnelles Breitband',
analysing: 'Anfrage wird analysiert...',
searchingDestinations: 'Ziele werden gesucht...',
generatingFilters: 'Filter werden generiert...',
refiningResults: 'Ergebnisse werden verfeinert...',
weeklyLimitReached:
'Du hast das w\u00F6chentliche KI-Nutzungslimit erreicht. Es wird n\u00E4chste Woche automatisch zur\u00FCckgesetzt.',
'Du hast das wöchentliche KI-Nutzungslimit erreicht. Es wird nächste Woche automatisch zurückgesetzt.',
},
// ── Map Legend ─────────────────────────────────────
mapLegend: {
clearColourView: 'Farbansicht zur\u00FCcksetzen',
clearColourView: 'Farbansicht zurücksetzen',
historicalMatches: 'Historische Immobilientreffer',
propertiesForSale: 'Immobilien zum Verkauf',
propertiesForRent: 'Immobilien zur Miete',
numberOfProperties: 'Anzahl der Immobilien',
previewing: 'Vorschau von \u201c{{name}}\u201d',
},
// ── Properties Pane ────────────────────────────────
@ -236,12 +246,12 @@ const de: Translations = {
unknownAddress: 'Unbekannte Adresse',
unsaveProperty: 'Immobilie nicht mehr merken',
saveProperty: 'Immobilie merken',
lastSold: 'Letzter Verkauf: \u00A3{{price}}',
lastSold: 'Letzter Verkauf: £{{price}}',
estValue: 'Gesch. Wert:',
type: 'Typ:',
builtForm: 'Bauweise:',
tenure: 'Besitzart:',
floorArea: 'Wohnfl\u00E4che:',
floorArea: 'Wohnfläche:',
bedrooms: 'Schlafzimmer:',
bathrooms: 'Badezimmer:',
rooms: 'Zimmer:',
@ -253,34 +263,34 @@ const de: Translations = {
renovations: 'Renovierungen',
viewExternalListing: 'Externes Inserat ansehen',
perMonth: '/Monat',
perSqm: '/m\u00B2',
perSqm: '/m²',
searchPlaceholder: 'Nach Adresse oder Postleitzahl suchen...',
propertyData: 'Immobiliendaten',
propertyDataDesc:
'Preise stammen vom HM Land Registry (was K\u00E4ufer tats\u00E4chlich bezahlt haben). Wohnfl\u00E4che, Energiebewertungen, Baujahr und Besitzart stammen aus offiziellen EPC-Gutachten. Beide Quellen werden nach Adresse innerhalb jeder Postleitzahl abgeglichen.',
'Preise stammen vom HM Land Registry (was Käufer tatsächlich bezahlt haben). Wohnfläche, Energiebewertungen, Baujahr und Besitzart stammen aus offiziellen EPC-Gutachten. Beide Quellen werden nach Adresse innerhalb jeder Postleitzahl abgeglichen.',
},
// ── Area Pane ──────────────────────────────────────
areaPane: {
areaStatistics: 'Gebietsstatistiken',
statsFor: 'Statistiken f\u00FCr alle Immobilien in diesem {{type}}',
statsFor: 'Statistiken für alle Immobilien in diesem {{type}}',
matchingFilters: ', die allen aktiven Filtern entsprechen',
viewProperties: '{{count}} Immobilien ansehen',
priceHistory: 'Preisentwicklung',
journeysFrom: 'Verbindungen ab {{label}}',
to: 'Nach {{destination}}',
noJourneyData: 'Keine Verbindungsdaten verf\u00FCgbar',
noJourneyData: 'Keine Verbindungsdaten verfügbar',
viewOnGoogleMaps: 'Auf Google Maps ansehen',
walk: 'Zu Fu\u00DF',
walk: 'Zu Fuß',
cycle: 'Fahrrad',
},
// ── Histogram Legend ───────────────────────────────
histogramLegend: {
tealBars: 'T\u00FCrkise Balken',
tealBarsDesc: 'zeigen die Verteilung im ausgew\u00E4hlten Gebiet',
tealBars: 'Türkise Balken',
tealBarsDesc: 'zeigen die Verteilung im ausgewählten Gebiet',
greyBars: 'Graue Balken',
greyBarsDesc: 'zeigen die Gesamtverteilung \u00FCber alle Gebiete',
greyBarsDesc: 'zeigen die Gesamtverteilung über alle Gebiete',
dashedLine: 'Gestrichelte Linie',
dashedLineDesc: 'zeigt den landesweiten Durchschnitt',
},
@ -293,9 +303,9 @@ const de: Translations = {
// ── POI Pane ───────────────────────────────────────
poiPane: {
pois: 'POIs',
pointsOfInterest: 'Sehensw\u00FCrdigkeiten & Einrichtungen',
pointsOfInterest: 'Sehenswürdigkeiten & Einrichtungen',
poiDescription:
'Daten von OpenStreetMap. Umfasst Haltestellen, Gesch\u00E4fte, Restaurants, Gesundheitseinrichtungen, Freizeit und mehr. Regelm\u00E4\u00DFig aktualisiert mit vollst\u00E4ndiger Kategorieabdeckung.',
'Daten von OpenStreetMap. Umfasst Haltestellen, Geschäfte, Restaurants, Gesundheitseinrichtungen, Freizeit und mehr. Regelmäßig aktualisiert mit vollständiger Kategorieabdeckung.',
searchCategories: 'Kategorien durchsuchen...',
dataSourceInfo: 'Datenquelleninfo',
},
@ -319,7 +329,7 @@ const de: Translations = {
// ── Mobile Drawer ──────────────────────────────────
mobileDrawer: {
closeDrawer: 'Schublade schlie\u00DFen',
closeDrawer: 'Schublade schließen',
},
// ── Home Page ──────────────────────────────────────
@ -328,9 +338,9 @@ const de: Translations = {
heroTitle2: 'Wert',
heroTitle3: 'Minimale Kompromisse.',
heroSubtitle:
'Auf Immobiliensuche? Mach aus deiner gr\u00F6\u00DFten Investition deine kl\u00FCgste Entscheidung.',
'Auf Immobiliensuche? Mach aus deiner größten Investition deine klügste Entscheidung.',
heroDescription:
'So viele M\u00F6glichkeiten \u2014 die richtige Wahl kann \u00FCberw\u00E4ltigend sein. Unsere interaktive Karte macht es einfach: W\u00E4hle deine Muss-Kriterien und sieh sofort die passenden Gebiete.',
'So viele Möglichkeiten — die richtige Wahl kann überwältigend sein. Unsere interaktive Karte macht es einfach: Wähle deine Muss-Kriterien und sieh sofort die passenden Gebiete.',
exploreTheMap: 'Karte entdecken',
seeTheDifference: 'Den Unterschied sehen',
statProperties: 'Immobilien',
@ -339,201 +349,201 @@ const de: Translations = {
statPostcodeInEngland: 'Postleitzahl in England',
ourPhilosophy: 'Unsere Philosophie',
philosophyP1:
'Auf Rightmove w\u00E4hlt man zuerst ein Gebiet und hofft, dass es gut ist. Am Ende vergleicht man Kriminalit\u00E4tsstatistiken, Schulberichte und Breitband-Checker in einem Dutzend Tabs, eine Postleitzahl nach der anderen.',
'Auf Rightmove wählt man zuerst ein Gebiet und hofft, dass es gut ist. Am Ende vergleicht man Kriminalitätsstatistiken, Schulberichte und Breitband-Checker in einem Dutzend Tabs, eine Postleitzahl nach der anderen.',
philosophyP2:
'Wir drehen das um. Sag uns, was du brauchst (Budget, Pendelweg, Schulen, Sicherheit), und wir zeigen dir jedes Gebiet in England, das passt. Kein Raten. Keine verschwendeten Besichtigungen.',
howToUseIt: 'So funktioniert es',
howStep1Title: 'Lege deine Muss-Kriterien fest',
howStep1Desc: 'Budget, Pendelweg, Schulen \u2014 die Karte zeigt nur, was passt.',
howStep1Desc: 'Budget, Pendelweg, Schulen die Karte zeigt nur, was passt.',
howStep2Title: 'Entdecke Gebiete und versteckte Perlen',
howStep2Desc: 'Zoom rein, schau dir Details und Kann-Kriterien an.',
howStep3Title: 'Einzelne Postleitzahlen erkunden',
howStep3Desc:
'Sieh einzelne Immobilien, Verkaufspreise, Wohnfl\u00E4chen und vergleiche.',
'Sieh einzelne Immobilien, Verkaufspreise, Wohnflächen und vergleiche.',
howStep4Title: 'Engere Auswahl mit Zuversicht',
howStep4Desc:
'Jedes Gebiet auf deiner Liste erf\u00FCllt deine tats\u00E4chlichen Kriterien \u2014 nicht nur, was diese Woche inseriert war.',
'Jedes Gebiet auf deiner Liste erfüllt deine tatsächlichen Kriterien — nicht nur, was diese Woche inseriert war.',
othersVs: 'Andere vs',
listingPortals: 'Immobilienportale',
checkMyPostcode: '\u201EMeine Postleitzahl pr\u00FCfen\u201C',
checkMyPostcode: '„Meine Postleitzahl prüfen“',
areaGuides: 'Gebietsratgeber',
compSearchWithout: 'Suchen, ohne zuerst ein Gebiet auszuw\u00E4hlen',
compSearchWithoutSub: '(starte mit Bed\u00FCrfnissen, nicht mit einem Ort)',
compSearchWithout: 'Suchen, ohne zuerst ein Gebiet auszuwählen',
compSearchWithoutSub: '(starte mit Bedürfnissen, nicht mit einem Ort)',
compAreaData: 'Gebietsdaten',
compAreaDataSub: '(Kriminalit\u00E4t, Schulen, L\u00E4rm, Breitband)',
compAreaDataSub: '(Kriminalität, Schulen, Lärm, Breitband)',
compPropertyData: 'Immobilienspezifische Daten',
compPropertyDataSub: '(Preis, EPC, Wohnfl\u00E4che)',
compPropertyDataSub: '(Preis, EPC, Wohnfläche)',
compFilters: '56 kombinierbare Filter an einem Ort',
compFiltersSub: '(alle Einblicke, eine interaktive Karte)',
ctaTitle:
'Mach aus deiner gr\u00F6\u00DFten Investition deine kl\u00FCgste\u00A0Entscheidung.',
'Mach aus deiner größten Investition deine klügste Entscheidung.',
ctaDescription:
'Das verdient die richtigen Werkzeuge \u2014 \u00FCberlass es nicht dem Zufall.',
'Das verdient die richtigen Werkzeuge — überlass es nicht dem Zufall.',
},
// ── Pricing Page ───────────────────────────────────
pricingPage: {
title: 'Fr\u00FChzugangspreis',
title: 'Frühzugangspreis',
subtitle:
'Einmal zahlen, f\u00FCr immer nutzen. Je fr\u00FCher du dabei bist, desto weniger zahlst du.',
'Einmal zahlen, für immer nutzen. Je früher du dabei bist, desto weniger zahlst du.',
costContext:
'Ein Hauskauf kostet \u00A310.000+ an Grunderwerbsteuer, \u00A31.500 an Anwaltsgeb\u00FChren, \u00A3500 f\u00FCr ein Gutachten. W\u00E4hlst du das falsche Gebiet, steckst du mit einem langen Pendelweg, schlechten Schulen oder einer Stra\u00DFe fest, von der du nichts wusstest.',
lessThanSurvey: 'Weniger als ein Hausgutachten. Deutlich n\u00FCtzlicher.',
'Ein Hauskauf kostet £10.000+ an Grunderwerbsteuer, £1.500 an Anwaltsgebühren, £500 für ein Gutachten. Wählst du das falsche Gebiet, steckst du mit einem langen Pendelweg, schlechten Schulen oder einer Straße fest, von der du nichts wusstest.',
lessThanSurvey: 'Weniger als ein Hausgutachten. Deutlich nützlicher.',
currentTier: 'Aktuelle Stufe',
firstNUsers: 'Erste {{count}} Nutzer',
everyoneAfter: 'Alle danach',
nextNUsers: 'N\u00E4chste {{count}} Nutzer',
nextNUsers: 'Nächste {{count}} Nutzer',
lifetime: '/lebenslang',
spotsRemaining: '{{count}} Platz verbleibend',
spotsRemainingPlural: '{{count}} Pl\u00E4tze verbleibend',
spotsRemainingPlural: '{{count}} Plätze verbleibend',
filled: 'Vergeben',
openDashboard: '\u00DCbersicht \u00F6ffnen',
openDashboard: 'Übersicht öffnen',
getStarted: 'Jetzt starten',
getStartedPrice: 'Jetzt starten \u2014 {{price}}',
getStartedPrice: 'Jetzt starten {{price}}',
noCreditCard: 'Keine Kreditkarte erforderlich',
moneyBackGuarantee: '30 Tage Geld-zur\u00FCck-Garantie',
moneyBackGuarantee: '30 Tage Geld-zurück-Garantie',
soldOut: 'Ausverkauft',
upcoming: 'Demn\u00E4chst',
upcoming: 'Demnächst',
failedToLoad:
'Preise konnten nicht geladen werden. Bitte sp\u00E4ter erneut versuchen.',
feat1: '56 Datenebenen f\u00FCr ganz England',
'Preise konnten nicht geladen werden. Bitte später erneut versuchen.',
feat1: '56 Datenebenen für ganz England',
feat2: 'Jede Postleitzahl bewertet und filterbar',
feat3: 'Unbegrenztes Erkunden der Karte und Exporte',
feat4: 'Mehrere Jahrzehnte historischer Preisdaten',
feat5: 'Kriminalit\u00E4t, Schulen, Verkehr, Breitband und mehr',
feat6: 'Alle zuk\u00FCnftigen Datenaktualisierungen inklusive',
feat5: 'Kriminalität, Schulen, Verkehr, Breitband und mehr',
feat6: 'Alle zukünftigen Datenaktualisierungen inklusive',
},
// ── Learn Page ─────────────────────────────────────
learnPage: {
faq: 'H\u00E4ufige Fragen',
faq: 'Häufige Fragen',
dataSources: 'Datenquellen',
support: 'Support',
dataSourcesIntro: 'Diese Anwendung kombiniert {{count}} offene Datens\u00E4tze zu Immobilienpreisen, Energieeffizienz, Verkehr, Demografie, Kriminalit\u00E4t, Umwelt und mehr.',
faqIntro: 'Ob Sie kaufen, mieten oder einfach nur st\u00F6bern \u2013 so hilft Ihnen Perfect Postcode, das richtige Gebiet zu finden.',
dataSourcesIntro: 'Diese Anwendung kombiniert {{count}} offene Datensätze zu Immobilienpreisen, Energieeffizienz, Verkehr, Demografie, Kriminalität, Umwelt und mehr.',
faqIntro: 'Ob Sie kaufen, mieten oder einfach nur stöbern so hilft Ihnen Perfect Postcode, das richtige Gebiet zu finden.',
supportIntro: 'Haben Sie eine Frage? Schauen Sie in unsere FAQ oder kontaktieren Sie uns direkt.',
source: 'Quelle:',
optOut: 'Widerspruch gegen \u00F6ffentliche Offenlegung',
optOut: 'Widerspruch gegen öffentliche Offenlegung',
attribution: 'Quellenangaben',
attrLandRegistry: 'Enth\u00E4lt Daten des HM Land Registry \u00A9 Crown copyright and database right 2025.',
attrOgl: 'Enth\u00E4lt \u00F6ffentliche Informationen lizenziert unter der',
attrLandRegistry: 'Enthält Daten des HM Land Registry © Crown copyright and database right 2025.',
attrOgl: 'Enthält öffentliche Informationen lizenziert unter der',
attrOglLink: 'Open Government Licence v3.0',
attrOs: 'Enth\u00E4lt OS-Daten \u00A9 Crown copyright and database rights 2025.',
attrOs: 'Enthält OS-Daten © Crown copyright and database rights 2025.',
attrTfl: 'Betrieben mit TfL Open Data.',
attrOsm: 'Enth\u00E4lt Daten von',
attrOsmContrib: '\u00A9 OpenStreetMap contributors',
attrOsmLicense: 'verf\u00FCgbar unter der',
attrOsm: 'Enthält Daten von',
attrOsmContrib: '© OpenStreetMap contributors',
attrOsmLicense: 'verfügbar unter der',
attrOsmLicenseLink: 'Open Data Commons Open Database License (ODbL)',
// Data source names & descriptions
dsPricePaidName: 'Price Paid Data',
dsPricePaidOrigin: 'HM Land Registry',
dsPricePaidUse: 'Vollst\u00E4ndige historische Immobilien-Verkaufspreise f\u00FCr England.',
dsPricePaidUse: 'Vollständige historische Immobilien-Verkaufspreise für England.',
dsEpcName: 'Energy Performance Certificates (EPC)',
dsEpcOrigin: 'Ministry of Housing, Communities & Local Government',
dsEpcUse: 'Energieausweise f\u00FCr Wohngeb\u00E4ude mit Angaben zu Wohnfl\u00E4che, Zimmeranzahl, Baujahr, Energiebewertungen, Immobilientyp und Bauform. \u00DCber Adresse innerhalb jeder Postleitzahl mit Price-Paid-Daten verkn\u00FCpft. Eigent\u00FCmer k\u00F6nnen der \u00F6ffentlichen Offenlegung widersprechen.',
dsEpcUse: 'Energieausweise für Wohngebäude mit Angaben zu Wohnfläche, Zimmeranzahl, Baujahr, Energiebewertungen, Immobilientyp und Bauform. Über Adresse innerhalb jeder Postleitzahl mit Price-Paid-Daten verknüpft. Eigentümer können der öffentlichen Offenlegung widersprechen.',
dsNsplName: 'National Statistics Postcode Lookup (NSPL)',
dsNsplOrigin: 'ONS / ArcGIS',
dsNsplUse: 'Ordnet Postleitzahlen Koordinaten und statistischen Gebietscodes zu, um alle gebietsbezogenen Datens\u00E4tze mit einzelnen Immobilien zu verkn\u00FCpfen.',
dsNsplUse: 'Ordnet Postleitzahlen Koordinaten und statistischen Gebietscodes zu, um alle gebietsbezogenen Datensätze mit einzelnen Immobilien zu verknüpfen.',
dsIodName: 'English Indices of Deprivation 2025',
dsIodOrigin: 'Ministry of Housing, Communities & Local Government',
dsIodUse: 'Relative Benachteiligungswerte f\u00FCr Einkommen, Besch\u00E4ftigung, Bildung, Gesundheit, Kriminalit\u00E4t und Wohnumfeld f\u00FCr jedes Viertel in England.',
dsEthnicityName: 'Bev\u00F6lkerung nach Ethnie (Zensus 2021)',
dsIodUse: 'Relative Benachteiligungswerte für Einkommen, Beschäftigung, Bildung, Gesundheit, Kriminalität und Wohnumfeld für jedes Viertel in England.',
dsEthnicityName: 'Bevölkerung nach Ethnie (Zensus 2021)',
dsEthnicityOrigin: 'ONS',
dsEthnicityUse: 'Bev\u00F6lkerungsanteile nach ethnischer Gruppe (s\u00FCdasiatisch, ostasiatisch, schwarz, gemischt, wei\u00DF, andere) pro Bezirk.',
dsEthnicityUse: 'Bevölkerungsanteile nach ethnischer Gruppe (südasiatisch, ostasiatisch, schwarz, gemischt, weiß, andere) pro Bezirk.',
dsCrimeName: 'Street-level Crime Data',
dsCrimeOrigin: 'data.police.uk',
dsCrimeUse: 'Kriminalit\u00E4tsdaten auf Stra\u00DFenebene von 2023 bis 2025, aggregiert als Jahresdurchschnitte nach LSOA und Deliktsart (Gewalt, Einbruch, antisoziales Verhalten, Drogen, Fahrzeugkriminalit\u00E4t usw.).',
dsCrimeUse: 'Kriminalitätsdaten auf Straßenebene von 2023 bis 2025, aggregiert als Jahresdurchschnitte nach LSOA und Deliktsart (Gewalt, Einbruch, antisoziales Verhalten, Drogen, Fahrzeugkriminalität usw.).',
dsOsmName: 'OpenStreetMap POIs',
dsOsmOrigin: 'OpenStreetMap contributors / Geofabrik',
dsOsmUse: 'Sehensw\u00FCrdigkeiten und Einrichtungen wie Gesch\u00E4fte, Restaurants, Gesundheitseinrichtungen, Freizeit, Tourismus und mehr in ganz Gro\u00DFbritannien.',
dsOsmUse: 'Sehenswürdigkeiten und Einrichtungen wie Geschäfte, Restaurants, Gesundheitseinrichtungen, Freizeit, Tourismus und mehr in ganz Großbritannien.',
dsGreenspaceName: 'OS Open Greenspace',
dsGreenspaceOrigin: 'Ordnance Survey',
dsGreenspaceUse: 'Offizielle Gr\u00FCnfl\u00E4chengrenzen f\u00FCr Gro\u00DFbritannien, einschlie\u00DFlich \u00F6ffentlicher Parks, G\u00E4rten, Sportpl\u00E4tze und Spielpl\u00E4tze. Polygon-Schwerpunkte werden f\u00FCr die Parkn\u00E4hez\u00E4hlung und Entfernungsberechnung zum n\u00E4chsten Park verwendet.',
dsGreenspaceUse: 'Offizielle Grünflächengrenzen für Großbritannien, einschließlich öffentlicher Parks, Gärten, Sportplätze und Spielplätze. Polygon-Schwerpunkte werden für die Parknähezählung und Entfernungsberechnung zum nächsten Park verwendet.',
dsNaptanName: 'NaPTAN (Public Transport Stops)',
dsNaptanOrigin: 'Department for Transport',
dsNaptanUse: 'Standorte von Bahnh\u00F6fen und Haltestellen f\u00FCr Bahn, Bus, U-Bahn/Stra\u00DFenbahn, F\u00E4hre und Flugh\u00E4fen in ganz England.',
dsNaptanUse: 'Standorte von Bahnhöfen und Haltestellen für Bahn, Bus, U-Bahn/Straßenbahn, Fähre und Flughäfen in ganz England.',
dsNoiseName: 'Defra Noise Mapping',
dsNoiseOrigin: 'Defra / Environment Agency',
dsNoiseUse: 'Stra\u00DFenl\u00E4rmpegel (24-Stunden-gewichteter Durchschnitt) aus der strategischen L\u00E4rmkartierung 2022, hochaufl\u00F6send modelliert und an jeder Postleitzahl abgetastet.',
dsNoiseUse: 'Straßenlärmpegel (24-Stunden-gewichteter Durchschnitt) aus der strategischen Lärmkartierung 2022, hochauflösend modelliert und an jeder Postleitzahl abgetastet.',
dsOfstedName: 'Ofsted School Inspections',
dsOfstedOrigin: 'Ofsted',
dsOfstedUse: 'Neueste Inspektionsergebnisse f\u00FCr staatlich finanzierte Schulen (Stand April 2025). Pro Postleitzahl gemittelt f\u00FCr einen lokalen Schulqualit\u00E4tswert (1=Hervorragend bis 4=Unzureichend).',
dsOfstedUse: 'Neueste Inspektionsergebnisse für staatlich finanzierte Schulen (Stand April 2025). Pro Postleitzahl gemittelt für einen lokalen Schulqualitätswert (1=Hervorragend bis 4=Unzureichend).',
dsBroadbandName: 'Ofcom Broadband Performance',
dsBroadbandOrigin: 'Ofcom',
dsBroadbandUse: 'Festnetz-Breitbandabdeckung und maximale Download-Geschwindigkeiten nach Gebiet aus Ofcom Connected Nations 2025.',
dsCouncilTaxName: 'Council Tax Levels 2025-26',
dsCouncilTaxOrigin: 'Ministry of Housing, Communities & Local Government',
dsCouncilTaxUse: 'J\u00E4hrliche Council-Tax-S\u00E4tze f\u00FCr die Stufen A bis H f\u00FCr alle 296 Abrechnungsbeh\u00F6rden in England, f\u00FCr eine von zwei Erwachsenen bewohnte Immobilie. \u00DCber den Bezirkscode aus dem NSPL-Postleitzahlenverzeichnis mit Immobilien verkn\u00FCpft.',
dsCouncilTaxUse: 'Jährliche Council-Tax-Sätze für die Stufen A bis H für alle 296 Abrechnungsbehörden in England, für eine von zwei Erwachsenen bewohnte Immobilie. Über den Bezirkscode aus dem NSPL-Postleitzahlenverzeichnis mit Immobilien verknüpft.',
dsRentalName: 'Private Rental Market Statistics',
dsRentalOrigin: 'ONS / Valuation Office Agency',
dsRentalUse: 'Monatliche Medianmieten des privaten Mietmarkts nach Bezirk und Schlafzimmerkategorie (Okt. 2022 - Sept. 2023). \u00DCber Bezirkscode und gesch\u00E4tzte Schlafzimmeranzahl mit Immobilien verkn\u00FCpft.',
dsRentalUse: 'Monatliche Medianmieten des privaten Mietmarkts nach Bezirk und Schlafzimmerkategorie (Okt. 2022 - Sept. 2023). Über Bezirkscode und geschätzte Schlafzimmeranzahl mit Immobilien verknüpft.',
// FAQ section titles
faqFindingTitle: 'Ihr Gebiet finden',
faqCommuteTitle: 'Pendelweg und Reisezeit',
faqBudgetTitle: 'Budget und Preis-Leistung',
faqSafetyTitle: 'Sicherheit und Nachbarschaft',
faqFamiliesTitle: 'Familien und Schulen',
faqEnvironmentTitle: 'Umwelt und Lebensqualit\u00E4t',
faqEnvironmentTitle: 'Umwelt und Lebensqualität',
faqWhyTitle: 'Warum Perfect Postcode',
faqPricingTitle: 'Preise und Zugang',
faqTipsTitle: 'Tipps und Tricks',
// FAQ items — Finding Your Area
faqFinding1Q: 'Ich wei\u00DF nicht einmal, welche Gebiete ich mir ansehen soll. Kann mir das helfen?',
faqFinding1A: 'Genau daf\u00FCr ist es da. Legen Sie Ihre Filter fest (Budget, Pendelzeit, geringe Kriminalit\u00E4t, gute Schulen) und die Karte leuchtet auf, um Ihnen jedes Gebiet zu zeigen, das alle Kriterien erf\u00FCllt. Kein n\u00E4chtliches Googeln nach \u201Ebeste Wohngegenden bei Manchester\u201C mehr.',
faqFinding2Q: 'Ich ziehe irgendwohin, wo ich noch nie war. Wie fange ich \u00FCberhaupt an?',
faqFinding2A: 'Stellen Sie Ihre Filter f\u00FCr das ein, was Ihnen wichtig ist, und die Karte hebt sofort die passenden Gebiete hervor. Sie gehen von \u201EIch kenne keine einzige Stra\u00DFe\u201C zu einer Auswahlliste in wenigen Minuten.',
faqFinding3Q: 'Wie finde ich Gebiete, die alle meine Kriterien gleichzeitig erf\u00FCllen?',
faqFinding3A: 'Kombinieren Sie mehrere Filter (Kriminalit\u00E4t unter dem Durchschnitt, gute Schulen, Pendelweg unter 40 Minuten) und f\u00E4rben Sie die Karte nach Preis, um die Gebiete mit dem besten Preis-Leistungs-Verh\u00E4ltnis zu finden. Die Karte aktualisiert sich in Echtzeit, wenn Sie die Regler bewegen.',
faqFinding1Q: 'Ich weiß nicht einmal, welche Gebiete ich mir ansehen soll. Kann mir das helfen?',
faqFinding1A: 'Genau dafür ist es da. Legen Sie Ihre Filter fest (Budget, Pendelzeit, geringe Kriminalität, gute Schulen) und die Karte leuchtet auf, um Ihnen jedes Gebiet zu zeigen, das alle Kriterien erfüllt. Kein nächtliches Googeln nach „beste Wohngegenden bei Manchester“ mehr.',
faqFinding2Q: 'Ich ziehe irgendwohin, wo ich noch nie war. Wie fange ich überhaupt an?',
faqFinding2A: 'Stellen Sie Ihre Filter für das ein, was Ihnen wichtig ist, und die Karte hebt sofort die passenden Gebiete hervor. Sie gehen von „Ich kenne keine einzige Straße“ zu einer Auswahlliste in wenigen Minuten.',
faqFinding3Q: 'Wie finde ich Gebiete, die alle meine Kriterien gleichzeitig erfüllen?',
faqFinding3A: 'Kombinieren Sie mehrere Filter (Kriminalität unter dem Durchschnitt, gute Schulen, Pendelweg unter 40 Minuten) und färben Sie die Karte nach Preis, um die Gebiete mit dem besten Preis-Leistungs-Verhältnis zu finden. Die Karte aktualisiert sich in Echtzeit, wenn Sie die Regler bewegen.',
// FAQ items — Commute and Travel
faqCommute1Q: 'Kann ich sehen, wie lange mein Pendelweg aus verschiedenen Gebieten tats\u00E4chlich dauern w\u00FCrde?',
faqCommute1A: 'Legen Sie Ihren Arbeitsplatz als Ziel fest und wir f\u00E4rben jede Postleitzahl nach Fahrzeit \u2013 ob mit Auto, Fahrrad oder \u00F6ffentlichen Verkehrsmitteln. Filtern Sie nach Ihrer maximalen Pendelzeit und der Rest verschwindet.',
faqCommute1Q: 'Kann ich sehen, wie lange mein Pendelweg aus verschiedenen Gebieten tatsächlich dauern würde?',
faqCommute1A: 'Legen Sie Ihren Arbeitsplatz als Ziel fest und wir färben jede Postleitzahl nach Fahrzeit ob mit Auto, Fahrrad oder öffentlichen Verkehrsmitteln. Filtern Sie nach Ihrer maximalen Pendelzeit und der Rest verschwindet.',
faqCommute2Q: 'Wie ist das besser als Google Maps?',
faqCommute2A: 'Google Maps zeigt Ihnen eine Fahrt auf einmal. Wir f\u00E4rben jede Postleitzahl in England nach Pendelzeit in einem Blick, sodass Sie Hunderte von Gebieten nebeneinander vergleichen k\u00F6nnen, anstatt sie einzeln zu suchen.',
faqCommute2A: 'Google Maps zeigt Ihnen eine Fahrt auf einmal. Wir färben jede Postleitzahl in England nach Pendelzeit in einem Blick, sodass Sie Hunderte von Gebieten nebeneinander vergleichen können, anstatt sie einzeln zu suchen.',
// FAQ items — Budget and Value
faqBudget1Q: 'Wie finde ich Gebiete, in denen ich am meisten Wohnfl\u00E4che f\u00FCr mein Geld bekomme?',
faqBudget1A: 'Filtern Sie nach Preis pro m\u00B2 und Sie sehen sofort, welche Postleitzahlen am meisten Fl\u00E4che pro Pfund bieten. Kombinieren Sie es mit dem Energiebewertungsfilter, um Immobilien mit hohen Heizkosten zu vermeiden.',
faqBudget2Q: 'Wie stelle ich sicher, dass ein g\u00FCnstiges Gebiet nicht aus gutem Grund g\u00FCnstig ist?',
faqBudget2A: 'Legen Sie Benachteiligungswerte, Kriminalit\u00E4tsstatistiken, Schulbewertungen und Breitbandgeschwindigkeiten neben den Preis. Wenn eine Postleitzahl erschwinglich ist und bei allem, was z\u00E4hlt, gut abschneidet, haben Sie echten Wert gefunden \u2013 nicht nur einen niedrigen Preis mit Kompromissen, die Sie noch nicht bemerkt haben.',
faqBudget1Q: 'Wie finde ich Gebiete, in denen ich am meisten Wohnfläche für mein Geld bekomme?',
faqBudget1A: 'Filtern Sie nach Preis pro m² und Sie sehen sofort, welche Postleitzahlen am meisten Fläche pro Pfund bieten. Kombinieren Sie es mit dem Energiebewertungsfilter, um Immobilien mit hohen Heizkosten zu vermeiden.',
faqBudget2Q: 'Wie stelle ich sicher, dass ein günstiges Gebiet nicht aus gutem Grund günstig ist?',
faqBudget2A: 'Legen Sie Benachteiligungswerte, Kriminalitätsstatistiken, Schulbewertungen und Breitbandgeschwindigkeiten neben den Preis. Wenn eine Postleitzahl erschwinglich ist und bei allem, was zählt, gut abschneidet, haben Sie echten Wert gefunden nicht nur einen niedrigen Preis mit Kompromissen, die Sie noch nicht bemerkt haben.',
// FAQ items — Safety and Neighbourhood
faqSafety1Q: 'Wie kann ich pr\u00FCfen, ob ein Gebiet sicher ist, bevor ich dorthin ziehe?',
faqSafety1A: 'Wir \u00FCberlagern echte polizeilich erfasste Kriminalit\u00E4tsdaten, aufgeschl\u00FCsselt nach Art, \u00FCber jedes Viertel in England. Filtern Sie nach Gewaltkriminalit\u00E4t, Einbruch oder antisozialem Verhalten und sehen Sie sofort, welche Postleitzahlen die niedrigsten Zahlen haben.',
faqSafety2Q: 'Ich finde st\u00E4ndig Wohnungen, die online toll aussehen, aber dann stellt sich die Gegend als schwierig heraus.',
faqSafety2A: 'Genau daf\u00FCr gibt es dieses Tool. Kombinieren Sie Kriminalit\u00E4tsraten, L\u00E4rmpegel, Benachteiligungswerte, Pubs und Parks in der N\u00E4he sowie Breitbandgeschwindigkeiten auf einer Karte, damit Sie wissen, wie ein Viertel wirklich ist, bevor Sie eine Besichtigung buchen.',
faqSafety1Q: 'Wie kann ich prüfen, ob ein Gebiet sicher ist, bevor ich dorthin ziehe?',
faqSafety1A: 'Wir überlagern echte polizeilich erfasste Kriminalitätsdaten, aufgeschlüsselt nach Art, über jedes Viertel in England. Filtern Sie nach Gewaltkriminalität, Einbruch oder antisozialem Verhalten und sehen Sie sofort, welche Postleitzahlen die niedrigsten Zahlen haben.',
faqSafety2Q: 'Ich finde ständig Wohnungen, die online toll aussehen, aber dann stellt sich die Gegend als schwierig heraus.',
faqSafety2A: 'Genau dafür gibt es dieses Tool. Kombinieren Sie Kriminalitätsraten, Lärmpegel, Benachteiligungswerte, Pubs und Parks in der Nähe sowie Breitbandgeschwindigkeiten auf einer Karte, damit Sie wissen, wie ein Viertel wirklich ist, bevor Sie eine Besichtigung buchen.',
// FAQ items — Families and Schools
faqFamilies1Q: 'Kann ich Gebiete mit guten Schulen UND geringer Kriminalit\u00E4t in einer Suche finden?',
faqFamilies1A: 'Ja. Kombinieren Sie Filter f\u00FCr Ofsted-Bewertungen, Kriminalit\u00E4tsraten, Parks und alles andere, was f\u00FCr Ihre Familie wichtig ist, und die Karte hebt nur die Gebiete hervor, die alles erf\u00FCllen. Kein Abgleich \u00FCber f\u00FCnf verschiedene Websites mehr.',
faqFamilies2Q: 'Woher wei\u00DF ich, ob ein Viertel Parks und Spielpl\u00E4tze in der N\u00E4he hat?',
faqFamilies2A: 'Schalten Sie die POI-Ebene f\u00FCr Parks und Gr\u00FCnfl\u00E4chen ein, um sie direkt auf der Karte zu sehen. Sie k\u00F6nnen auch nach der Anzahl der fu\u00DFl\u00E4ufig erreichbaren Parks pro Postleitzahl filtern.',
faqFamilies1Q: 'Kann ich Gebiete mit guten Schulen UND geringer Kriminalität in einer Suche finden?',
faqFamilies1A: 'Ja. Kombinieren Sie Filter für Ofsted-Bewertungen, Kriminalitätsraten, Parks und alles andere, was für Ihre Familie wichtig ist, und die Karte hebt nur die Gebiete hervor, die alles erfüllen. Kein Abgleich über fünf verschiedene Websites mehr.',
faqFamilies2Q: 'Woher weiß ich, ob ein Viertel Parks und Spielplätze in der Nähe hat?',
faqFamilies2A: 'Schalten Sie die POI-Ebene für Parks und Grünflächen ein, um sie direkt auf der Karte zu sehen. Sie können auch nach der Anzahl der fußläufig erreichbaren Parks pro Postleitzahl filtern.',
// FAQ items — Environment and Quality of Life
faqEnv1Q: 'Kann ich energieeffiziente Wohnungen finden, die nicht an einer lauten Stra\u00DFe liegen?',
faqEnv1A: 'Filtern Sie nach EPC-Bewertung (A bis C), dann \u00FCberlagern Sie die Stra\u00DFenl\u00E4rmdaten, um alles \u00FCber Ihrem Schwellenwert auszuschlie\u00DFen. F\u00E4rben Sie nach einem der beiden Kriterien, um ruhige, effiziente Stra\u00DFen auf einen Blick zu erkennen.',
faqEnv1Q: 'Kann ich energieeffiziente Wohnungen finden, die nicht an einer lauten Straße liegen?',
faqEnv1A: 'Filtern Sie nach EPC-Bewertung (A bis C), dann überlagern Sie die Straßenlärmdaten, um alles über Ihrem Schwellenwert auszuschließen. Färben Sie nach einem der beiden Kriterien, um ruhige, effiziente Straßen auf einen Blick zu erkennen.',
faqEnv2Q: 'Zeigt es Hochwasser- oder Senkungsrisiken?',
faqEnv2A: 'Wir integrieren Bodenstabilit\u00E4tsdaten, damit Sie vor dem Kauf auf Senkungen, Schrumpf-Quell-Tone und andere geologische Risiken pr\u00FCfen k\u00F6nnen. Schlie\u00DFen Sie Risikogebiete fr\u00FChzeitig aus.',
faqEnv2A: 'Wir integrieren Bodenstabilitätsdaten, damit Sie vor dem Kauf auf Senkungen, Schrumpf-Quell-Tone und andere geologische Risiken prüfen können. Schließen Sie Risikogebiete frühzeitig aus.',
faqEnv3Q: 'Kann ich Gebiete mit schnellem Breitband finden, die wirklich ruhig sind?',
faqEnv3A: '\u00DCberlagern Sie den Breitbandfilter mit den Stra\u00DFenl\u00E4rmdaten, um Stra\u00DFen mit guter Anbindung und wenig Verkehrsl\u00E4rm zu finden. F\u00E4rben Sie nach einem der beiden Kriterien, um Gebiete auf einen Blick zu vergleichen.',
faqEnv3A: 'Überlagern Sie den Breitbandfilter mit den Straßenlärmdaten, um Straßen mit guter Anbindung und wenig Verkehrslärm zu finden. Färben Sie nach einem der beiden Kriterien, um Gebiete auf einen Blick zu vergleichen.',
// FAQ items — Why Perfect Postcode
faqWhy1Q: 'Ich benutze bereits Rightmove. Was bringt mir das zus\u00E4tzlich?',
faqWhy1A: 'Rightmove zeigt Ihnen H\u00E4user. Wir zeigen Ihnen Gebiete. Kriminalit\u00E4tsraten, Schulbewertungen, Breitbandgeschwindigkeiten, L\u00E4rmpegel, Benachteiligungswerte und mehr \u2013 alles filterbar auf einer Karte. Sie k\u00F6nnen ein Viertel beurteilen, bevor Sie sich die Angebote ansehen.',
faqWhy1Q: 'Ich benutze bereits Rightmove. Was bringt mir das zusätzlich?',
faqWhy1A: 'Rightmove zeigt Ihnen Häuser. Wir zeigen Ihnen Gebiete. Kriminalitätsraten, Schulbewertungen, Breitbandgeschwindigkeiten, Lärmpegel, Benachteiligungswerte und mehr alles filterbar auf einer Karte. Sie können ein Viertel beurteilen, bevor Sie sich die Angebote ansehen.',
faqWhy2Q: 'Kann ich das nicht alles kostenlos selbst recherchieren?',
faqWhy2A: 'Sie k\u00F6nnten Polizeidaten, Ofsted-Berichte, EPC-Register, Land-Registry-Eintr\u00E4ge und ONS-Statistiken eine Postleitzahl nach der anderen abgleichen. Oder Sie haben alles filterbar und farbkodiert auf einer Karte in Sekunden.',
faqWhy3Q: 'Woher stammen die Daten tats\u00E4chlich?',
faqWhy3A: 'Jeder Datensatz stammt aus offiziellen britischen Regierungsquellen: Land Registry, EPC-Register, ONS, Ofsted, Ofcom, data.police.uk und Defra. Wir scrapen keine Makler und erfinden nichts. Sie k\u00F6nnen jeden Eintrag anhand der Originalquelle \u00FCberpr\u00FCfen.',
faqWhy2A: 'Sie könnten Polizeidaten, Ofsted-Berichte, EPC-Register, Land-Registry-Einträge und ONS-Statistiken eine Postleitzahl nach der anderen abgleichen. Oder Sie haben alles filterbar und farbkodiert auf einer Karte in Sekunden.',
faqWhy3Q: 'Woher stammen die Daten tatsächlich?',
faqWhy3A: 'Jeder Datensatz stammt aus offiziellen britischen Regierungsquellen: Land Registry, EPC-Register, ONS, Ofsted, Ofcom, data.police.uk und Defra. Wir scrapen keine Makler und erfinden nichts. Sie können jeden Eintrag anhand der Originalquelle überprüfen.',
// FAQ items — Pricing and Access
faqPricing1Q: 'Lohnt es sich wirklich, f\u00FCr ein Immobilien-Suchtool zu bezahlen?',
faqPricing1A: 'Ein Hauskauf ist wahrscheinlich die gr\u00F6\u00DFte Anschaffung Ihres Lebens. Ein einziges Warnsignal zu erkennen (eine laute Stra\u00DFe, schlechtes Breitband, steigende Kriminalit\u00E4t) bevor Sie sich festlegen, k\u00F6nnte Ihnen Jahre des Bedauerns ersparen. Das kostet weniger als eine Tankf\u00FCllung.',
faqPricing1Q: 'Lohnt es sich wirklich, für ein Immobilien-Suchtool zu bezahlen?',
faqPricing1A: 'Ein Hauskauf ist wahrscheinlich die größte Anschaffung Ihres Lebens. Ein einziges Warnsignal zu erkennen (eine laute Straße, schlechtes Breitband, steigende Kriminalität) bevor Sie sich festlegen, könnte Ihnen Jahre des Bedauerns ersparen. Das kostet weniger als eine Tankfüllung.',
faqPricing2Q: 'Ist das ein Abonnement?',
faqPricing2A: 'Nein. Einmalzahlung, Ihres f\u00FCr immer. Nutzen Sie es intensiv w\u00E4hrend Ihrer Suche, kommen Sie zur\u00FCck, wenn Sie neugierig auf ein neues Gebiet sind, und es ist immer noch da, falls Sie erneut umziehen.',
faqPricing2A: 'Nein. Einmalzahlung, Ihres für immer. Nutzen Sie es intensiv während Ihrer Suche, kommen Sie zurück, wenn Sie neugierig auf ein neues Gebiet sind, und es ist immer noch da, falls Sie erneut umziehen.',
faqPricing3Q: 'Was kann ich mit der kostenlosen Version nutzen?',
faqPricing3A: 'Kostenlose Nutzer k\u00F6nnen alle Funktionen im Demogebiet erkunden (Innenstadt London, ungef\u00E4hr Zonen 1 bis 2). F\u00FCr den Zugang zu Daten f\u00FCr den Rest Englands ben\u00F6tigen Sie den lebenslangen Zugang.',
faqPricing4Q: 'Kann ich eine R\u00FCckerstattung erhalten?',
faqPricing4A: 'Selbstverst\u00E4ndlich. Wir bieten eine 30-Tage-Geld-zur\u00FCck-Garantie. Wenn Sie nicht zufrieden sind, schreiben Sie innerhalb von 30 Tagen an support@perfect-postcode.co.uk f\u00FCr eine vollst\u00E4ndige R\u00FCckerstattung.',
faqPricing3A: 'Kostenlose Nutzer können alle Funktionen im Demogebiet erkunden (Innenstadt London, ungefähr Zonen 1 bis 2). Für den Zugang zu Daten für den Rest Englands benötigen Sie den lebenslangen Zugang.',
faqPricing4Q: 'Kann ich eine Rückerstattung erhalten?',
faqPricing4A: 'Selbstverständlich. Wir bieten eine 30-Tage-Geld-zurück-Garantie. Wenn Sie nicht zufrieden sind, schreiben Sie innerhalb von 30 Tagen an support@perfect-postcode.co.uk für eine vollständige Rückerstattung.',
// FAQ items — Tips and Tricks
faqTips1Q: 'Wie nutze ich den KI-Filter, anstatt Filter einzeln hinzuzuf\u00FCgen?',
faqTips1A: 'Beschreiben Sie, was Sie suchen, z.\u00A0B. \u201Eruhige Gegend nahe guten Schulen mit schnellem Breitband unter \u00A3400k\u201C, und die KI richtet alle relevanten Filter auf einmal ein. Passen Sie danach manuell an.',
faqTips2Q: 'Kann ich eine Suche speichern und sp\u00E4ter darauf zur\u00FCckkommen?',
faqTips2A: 'Klicken Sie auf Speichern und alles wird erfasst: Ihre Filter, die Zoomstufe und die angezeigte Datenebene. Machen Sie genau dort weiter, wo Sie aufgeh\u00F6rt haben, oder teilen Sie den Link mit Ihrem Partner.',
faqTips1Q: 'Wie nutze ich den KI-Filter, anstatt Filter einzeln hinzuzufügen?',
faqTips1A: 'Beschreiben Sie, was Sie suchen, z. B. „ruhige Gegend nahe guten Schulen mit schnellem Breitband unter £400k“, und die KI richtet alle relevanten Filter auf einmal ein. Passen Sie danach manuell an.',
faqTips2Q: 'Kann ich eine Suche speichern und später darauf zurückkommen?',
faqTips2A: 'Klicken Sie auf Speichern und alles wird erfasst: Ihre Filter, die Zoomstufe und die angezeigte Datenebene. Machen Sie genau dort weiter, wo Sie aufgehört haben, oder teilen Sie den Link mit Ihrem Partner.',
faqTips3Q: 'Kann ich die angezeigten Daten exportieren?',
faqTips3A: 'Nutzen Sie den Export-Button, um die aktuell gefilterten Immobilien als Tabelle herunterzuladen. Der Export ber\u00FCcksichtigt alle aktiven Filter, sodass Sie genau die gew\u00FCnschten Daten erhalten.',
faqTips3A: 'Nutzen Sie den Export-Button, um die aktuell gefilterten Immobilien als Tabelle herunterzuladen. Der Export berücksichtigt alle aktiven Filter, sodass Sie genau die gewünschten Daten erhalten.',
},
// ── Account Page ───────────────────────────────────
@ -541,7 +551,7 @@ const de: Translations = {
emailLabel: 'E-Mail',
subscriptionLabel: 'Abonnement',
upgrade: 'Upgraden',
redirecting: 'Weiterleitung\u2026',
redirecting: 'Weiterleitung',
receiveNewsletter: 'Newsletter-E-Mails erhalten',
needHelp: 'Brauchst du Hilfe? Schreib uns an',
responseTime: 'Wir antworten in der Regel innerhalb von 24 Stunden.',
@ -552,20 +562,20 @@ const de: Translations = {
searches: 'Suchen',
noSavedSearches: 'Noch keine gespeicherten Suchen',
noSavedSearchesDesc:
'Speichere deine Filter und Kartenansicht, um genau dort weiterzumachen, wo du aufgeh\u00F6rt hast.',
'Speichere deine Filter und Kartenansicht, um genau dort weiterzumachen, wo du aufgehört hast.',
noSavedProperties: 'Noch keine gespeicherten Immobilien',
noSavedPropertiesDesc:
'Merke dir Immobilien w\u00E4hrend du erkundest und erstelle deine Auswahlliste, ohne den \u00DCberblick zu verlieren.',
openPostcode: 'Postleitzahl \u00F6ffnen',
'Merke dir Immobilien während du erkundest und erstelle deine Auswahlliste, ohne den Überblick zu verlieren.',
openPostcode: 'Postleitzahl öffnen',
viewListing: 'Inserat ansehen',
clickToRename: 'Klicken zum Umbenennen',
notesPlaceholder: 'Notiere deine Gedanken...',
deleteSearch: 'Suche l\u00F6schen',
deleteSearch: 'Suche löschen',
deleteSearchConfirm:
'M\u00F6chtest du diese gespeicherte Suche wirklich l\u00F6schen? Dies kann nicht r\u00FCckg\u00E4ngig gemacht werden.',
deleteProperty: 'Immobilie l\u00F6schen',
'Möchtest du diese gespeicherte Suche wirklich löschen? Dies kann nicht rückgängig gemacht werden.',
deleteProperty: 'Immobilie löschen',
deletePropertyConfirm:
'M\u00F6chtest du diese gespeicherte Immobilie wirklich l\u00F6schen? Dies kann nicht r\u00FCckg\u00E4ngig gemacht werden.',
'Möchtest du diese gespeicherte Immobilie wirklich löschen? Dies kann nicht rückgängig gemacht werden.',
bed: 'Schlafz.',
epc: 'EPC',
},
@ -573,7 +583,7 @@ const de: Translations = {
// ── Invites Page ───────────────────────────────────
invitesPage: {
inviteLinksLicensed:
'Einladungslinks sind f\u00FCr lizenzierte Nutzer verf\u00FCgbar.',
'Einladungslinks sind für lizenzierte Nutzer verfügbar.',
inviteAdminLabel: 'Freunde einladen (100% Rabatt)',
inviteReferralLabel: 'Freunde einladen (30% Rabatt)',
generateFreeInvite: 'Kostenlosen Einladungslink erstellen',
@ -586,7 +596,7 @@ const de: Translations = {
link: 'Link',
status: 'Status',
created: 'Erstellt',
redeemed: 'Eingel\u00F6st',
redeemed: 'Eingelöst',
pending: 'Ausstehend',
},
@ -604,21 +614,21 @@ const de: Translations = {
'Ein Freund hat 30% Rabatt auf lebenslangen Zugang mit dir geteilt.',
exploreEvery: 'Entdecke jedes Viertel in England',
propertyInfo:
'Immobilienpreise, Energiebewertungen, Kriminalit\u00E4tsstatistiken, Schulbewertungen und mehr',
invalidInvite: 'Ung\u00FCltige Einladung',
'Immobilienpreise, Energiebewertungen, Kriminalitätsstatistiken, Schulbewertungen und mehr',
invalidInvite: 'Ungültige Einladung',
inviteAlreadyUsed: 'Einladung bereits verwendet',
inviteAlreadyUsedDesc:
'Dieser Einladungslink wurde bereits eingel\u00F6st.',
invalidInviteLink: 'Ung\u00FCltiger Einladungslink',
'Dieser Einladungslink wurde bereits eingelöst.',
invalidInviteLink: 'Ungültiger Einladungslink',
invalidInviteLinkDesc:
'Dieser Einladungslink ist ung\u00FCltig oder abgelaufen.',
'Dieser Einladungslink ist ungültig oder abgelaufen.',
licenseActivated: 'Lizenz aktiviert!',
fullAccessGranted:
'Du hast jetzt vollen Zugang zu Perfect Postcode.',
activating: 'Wird aktiviert...',
activateLicense: 'Lizenz aktivieren',
claimDiscount: 'Rabatt einl\u00F6sen',
registerToClaim: 'Registrieren zum Einl\u00F6sen',
claimDiscount: 'Rabatt einlösen',
registerToClaim: 'Registrieren zum Einlösen',
youAlreadyHaveLicense: 'Du hast bereits eine Lizenz',
accountHasFullAccess: 'Dein Konto hat bereits vollen Zugang.',
failedToValidate: 'Einladungslink konnte nicht validiert werden',
@ -642,7 +652,7 @@ const de: Translations = {
poiCategories: '{{count}} POI-Kategorien',
travelDestination: '{{count}} Fahrziel',
travelDestinations: '{{count}} Fahrziele',
propertiesMatch: '{{count}} Immobilien stimmen \u00FCberein',
propertiesMatch: '{{count}} Immobilien stimmen überein',
setFilters: '{{count}} Filter setzen: {{list}}',
noFiltersSet: 'Keine Filter gesetzt',
toDestination: '{{mode}} nach {{label}} {{bounds}}',
@ -652,18 +662,18 @@ const de: Translations = {
// ── Tutorial ──────────────────────────────────────
tutorial: {
step1Title: 'Sagen Sie der Karte, was z\u00E4hlt',
step1Content: 'Legen Sie Ihr Budget, maximale Pendelzeit, Schulqualit\u00E4t und Kriminalit\u00E4tsschwelle fest. Was Ihnen wichtig ist. Nur qualifizierende Gebiete bleiben hervorgehoben. Nutzen Sie das Augensymbol, um nach beliebigem Merkmal einzuf\u00E4rben.',
step1Title: 'Sagen Sie der Karte, was zählt',
step1Content: 'Legen Sie Ihr Budget, maximale Pendelzeit, Schulqualität und Kriminalitätsschwelle fest. Was Ihnen wichtig ist. Nur qualifizierende Gebiete bleiben hervorgehoben. Nutzen Sie das Augensymbol, um nach beliebigem Merkmal einzufärben.',
step2Title: 'Oder einfach beschreiben',
step2Content: 'Tippen Sie auf Deutsch ein, was Sie suchen, z.\u00A0B. \u201Eruhige Gegend nahe guter Schulen unter \u00A3400k\u201C, und wir richten die Filter f\u00FCr Sie ein.',
step2Content: 'Tippen Sie auf Deutsch ein, was Sie suchen, z. B. „ruhige Gegend nahe guter Schulen unter £400k“, und wir richten die Filter für Sie ein.',
step3Title: 'Erkunden Sie, was es gibt',
step3Content: 'Schwenken und zoomen Sie durch England. Klicken Sie auf ein beliebiges farbiges Gebiet, um Kriminalit\u00E4t, Schulen, Preise, Breitband, L\u00E4rm und mehr zu sehen.',
step3Content: 'Schwenken und zoomen Sie durch England. Klicken Sie auf ein beliebiges farbiges Gebiet, um Kriminalität, Schulen, Preise, Breitband, Lärm und mehr zu sehen.',
step4Title: 'Direkt zu einem Ort springen',
step4Content: 'Suchen Sie nach einem Ort oder einer Postleitzahl, um sofort dorthin zu gelangen.',
step5Title: 'Ins Detail gehen',
step5Content: 'Sehen Sie Gebietsstatistiken, Histogramme und einzelne Immobiliendaten: Preise, Wohnfl\u00E4che, Energiebewertungen und mehr.',
step6Title: 'Was ist in der N\u00E4he?',
step6Content: 'Blenden Sie Schulen, Gesch\u00E4fte, Bahnh\u00F6fe, Parks und Restaurants auf der Karte ein, um zu sehen, was erreichbar ist.',
step5Content: 'Sehen Sie Gebietsstatistiken, Histogramme und einzelne Immobiliendaten: Preise, Wohnfläche, Energiebewertungen und mehr.',
step6Title: 'Was ist in der Nähe?',
step6Content: 'Blenden Sie Schulen, Geschäfte, Bahnhöfe, Parks und Restaurants auf der Karte ein, um zu sehen, was erreichbar ist.',
},
// ── Server-derived values ──────────────────────────
@ -675,7 +685,7 @@ const de: Translations = {
'Transport': 'Verkehr',
'Education': 'Bildung',
'Deprivation': 'Benachteiligung',
'Crime': 'Kriminalit\u00E4t',
'Crime': 'Kriminalität',
'Demographics': 'Demografie',
'Amenities': 'Infrastruktur',
@ -684,14 +694,14 @@ const de: Translations = {
'Property type': 'Immobilientyp',
'Leasehold/Freehold': 'Erbbaurecht/Volleigentum',
'Last known price': 'Letzter bekannter Preis',
'Estimated current price': 'Gesch\u00E4tzter aktueller Preis',
'Estimated current price': 'Geschätzter aktueller Preis',
'Asking price': 'Angebotspreis',
'Price per sqm': 'Preis pro m\u00B2',
'Est. price per sqm': 'Gesch. Preis pro m\u00B2',
'Asking price per sqm': 'Angebotspreis pro m\u00B2',
'Estimated monthly rent': 'Gesch\u00E4tzte Monatsmiete',
'Price per sqm': 'Preis pro m²',
'Est. price per sqm': 'Gesch. Preis pro m²',
'Asking price per sqm': 'Angebotspreis pro m²',
'Estimated monthly rent': 'Geschätzte Monatsmiete',
'Asking rent (monthly)': 'Angebotsmiete (monatlich)',
'Total floor area (sqm)': 'Gesamtwohnfl\u00E4che (m\u00B2)',
'Total floor area (sqm)': 'Gesamtwohnfläche (m²)',
'Number of bedrooms & living rooms': 'Anzahl Schlaf- & Wohnzimmer',
'Bedrooms': 'Schlafzimmer',
'Bathrooms': 'Badezimmer',
@ -701,26 +711,25 @@ const de: Translations = {
'Former council house': 'Ehemaliger Sozialbau',
'Current energy rating': 'Aktuelle Energiebewertung',
'Potential energy rating': 'Potenzielle Energiebewertung',
'Interior height (m)': 'Raumh\u00F6he (m)',
'Interior height (m)': 'Raumhöhe (m)',
// ─ Feature names (Transport) ─
'Distance to nearest train or tube station (km)': 'Entfernung zum n\u00E4chsten Bahn- oder U-Bahnhof (km)',
'Train or tube stations within 1km': 'Bahn- oder U-Bahnh\u00F6fe im Umkreis von 1 km',
'Distance to nearest train or tube station (km)': 'Entfernung zum nächsten Bahn- oder U-Bahnhof (km)',
// ─ Feature names (Education) ─
'Good+ primary schools within 2km': 'Gute+ Grundschulen im Umkreis von 2 km',
'Good+ secondary schools within 2km': 'Gute+ weiterf\u00FChrende Schulen im Umkreis von 2 km',
'Good+ secondary schools within 2km': 'Gute+ weiterführende Schulen im Umkreis von 2 km',
'Good+ primary schools within 5km': 'Gute+ Grundschulen im Umkreis von 5 km',
'Good+ secondary schools within 5km': 'Gute+ weiterf\u00FChrende Schulen im Umkreis von 5 km',
'Education, Skills and Training Score': 'Score f\u00FCr Bildung, Kompetenzen und Ausbildung',
'Good+ secondary schools within 5km': 'Gute+ weiterführende Schulen im Umkreis von 5 km',
'Education, Skills and Training Score': 'Score für Bildung, Kompetenzen und Ausbildung',
// ─ Feature names (Deprivation) ─
'Income Score (rate)': 'Einkommensscore (Rate)',
'Employment Score (rate)': 'Besch\u00E4ftigungsscore (Rate)',
'Health Deprivation and Disability Score': 'Score f\u00FCr Gesundheit und Behinderung',
'Employment Score (rate)': 'Beschäftigungsscore (Rate)',
'Health Deprivation and Disability Score': 'Score für Gesundheit und Behinderung',
'Living Environment Score': 'Score der Wohnumgebung',
'Indoors Sub-domain Score': 'Score der Wohnqualit\u00E4t (innen)',
'Outdoors Sub-domain Score': 'Score der Umgebungsqualit\u00E4t (au\u00DFen)',
'Indoors Sub-domain Score': 'Score der Wohnqualität (innen)',
'Outdoors Sub-domain Score': 'Score der Umgebungsqualität (außen)',
// ─ Feature names (Crime) ─
'Serious crime per 1k residents (avg/yr)': 'Schwere Straftaten pro 1k Einwohner (Durchschn./Jahr)',
@ -728,36 +737,36 @@ const de: Translations = {
'Serious crime (avg/yr)': 'Schwere Straftaten (Durchschn./Jahr)',
'Minor crime (avg/yr)': 'Leichte Straftaten (Durchschn./Jahr)',
'Violence and sexual offences (avg/yr)': 'Gewalt- und Sexualdelikte (Durchschn./Jahr)',
'Burglary (avg/yr)': 'Einbr\u00FCche (Durchschn./Jahr)',
'Robbery (avg/yr)': 'Raub\u00FCberf\u00E4lle (Durchschn./Jahr)',
'Vehicle crime (avg/yr)': 'Fahrzeugkriminalit\u00E4t (Durchschn./Jahr)',
'Burglary (avg/yr)': 'Einbrüche (Durchschn./Jahr)',
'Robbery (avg/yr)': 'Raubüberfälle (Durchschn./Jahr)',
'Vehicle crime (avg/yr)': 'Fahrzeugkriminalität (Durchschn./Jahr)',
'Anti-social behaviour (avg/yr)': 'Antisoziales Verhalten (Durchschn./Jahr)',
'Criminal damage and arson (avg/yr)': 'Sachbesch\u00E4digung und Brandstiftung (Durchschn./Jahr)',
'Criminal damage and arson (avg/yr)': 'Sachbeschädigung und Brandstiftung (Durchschn./Jahr)',
'Other theft (avg/yr)': 'Sonstiger Diebstahl (Durchschn./Jahr)',
'Theft from the person (avg/yr)': 'Taschendiebstahl (Durchschn./Jahr)',
'Shoplifting (avg/yr)': 'Ladendiebstahl (Durchschn./Jahr)',
'Bicycle theft (avg/yr)': 'Fahrraddiebstahl (Durchschn./Jahr)',
'Drugs (avg/yr)': 'Drogendelikte (Durchschn./Jahr)',
'Possession of weapons (avg/yr)': 'Waffenbesitz (Durchschn./Jahr)',
'Public order (avg/yr)': 'St\u00F6rung der \u00F6ffentlichen Ordnung (Durchschn./Jahr)',
'Public order (avg/yr)': 'Störung der öffentlichen Ordnung (Durchschn./Jahr)',
'Other crime (avg/yr)': 'Sonstige Straftaten (Durchschn./Jahr)',
// ─ Feature names (Demographics) ─
'Median age': 'Medianalter',
'% White': '% Wei\u00DF',
'% South Asian': '% S\u00FCdasiatisch',
'% White': '% Weiß',
'% South Asian': '% Südasiatisch',
'% Black': '% Schwarz',
'% East Asian': '% Ostasiatisch',
'% Mixed': '% Gemischt',
'% Other': '% Sonstige',
// ─ Feature names (Amenities) ─
'Distance to nearest park (km)': 'Entfernung zum n\u00E4chsten Park (km)',
'Distance to nearest park (km)': 'Entfernung zum nächsten Park (km)',
'Number of parks within 2km': 'Anzahl Parks im Umkreis von 2 km',
'Number of restaurants within 2km': 'Anzahl Restaurants im Umkreis von 2 km',
'Number of grocery shops and supermarkets within 2km': 'Anzahl Lebensmittelgesch\u00E4fte und Superm\u00E4rkte im Umkreis von 2 km',
'Noise (dB)': 'L\u00E4rm (dB)',
'Max available download speed (Mbps)': 'Max. verf\u00FCgbare Downloadgeschwindigkeit (Mbps)',
'Number of grocery shops and supermarkets within 2km': 'Anzahl Lebensmittelgeschäfte und Supermärkte im Umkreis von 2 km',
'Noise (dB)': 'Lärm (dB)',
'Max available download speed (Mbps)': 'Max. verfügbare Downloadgeschwindigkeit (Mbps)',
// ─ Enum values ─
@ -765,7 +774,7 @@ const de: Translations = {
'For sale': 'Zum Verkauf',
'For rent': 'Zur Miete',
'Detached': 'Freistehend',
'Semi-Detached': 'Doppelhaush\u00E4lfte',
'Semi-Detached': 'Doppelhaushälfte',
'Terraced': 'Reihenhaus',
'Flats/Maisonettes': 'Wohnungen/Maisonetten',
'Other': 'Sonstige',
@ -780,25 +789,25 @@ const de: Translations = {
'Ethnic composition': 'Ethnische Zusammensetzung',
// ─ POI group names ─
'Public Transport': '\u00D6ffentlicher Nahverkehr',
'Public Transport': 'Öffentlicher Nahverkehr',
'Leisure': 'Freizeit',
'Health': 'Gesundheit',
'Emergency Services': 'Rettungsdienste',
'Groceries': 'Lebensmittel',
'Local Businesses': 'Lokale Gesch\u00E4fte',
'Local Businesses': 'Lokale Geschäfte',
'Culture': 'Kultur',
'Services': 'Dienstleistungen',
'Shops': 'Gesch\u00E4fte',
'Shops': 'Geschäfte',
// ─ POI categories ─
'Airport': 'Flughafen',
'Ferry': 'F\u00E4hre',
'Ferry': 'Fähre',
'Rail station': 'Bahnhof',
'Bus stop': 'Bushaltestelle',
'Bus station': 'Busbahnhof',
'Taxi rank': 'Taxistand',
'Metro or Tram stop': 'U-Bahn- oder Stra\u00DFenbahnhaltestelle',
'Caf\u00E9': 'Caf\u00E9',
'Metro or Tram stop': 'U-Bahn- oder Straßenbahnhaltestelle',
'Café': 'Café',
'Restaurant': 'Restaurant',
'Pub': 'Pub',
'Bar': 'Bar',
@ -812,12 +821,12 @@ const de: Translations = {
'Sports Centre': 'Sportzentrum',
'Entertainment': 'Unterhaltung',
'Supermarket': 'Supermarkt',
'Convenience Store': 'Sp\u00E4tkauf',
'Bakery': 'B\u00E4ckerei',
'Butcher & Fishmonger': 'Metzgerei & Fischh\u00E4ndler',
'Greengrocer': 'Gem\u00FCseh\u00E4ndler',
'Off-Licence': 'Getr\u00E4nkeladen',
'Deli & Specialty': 'Feinkost & Spezialit\u00E4ten',
'Convenience Store': 'Spätkauf',
'Bakery': 'Bäckerei',
'Butcher & Fishmonger': 'Metzgerei & Fischhändler',
'Greengrocer': 'Gemüsehändler',
'Off-Licence': 'Getränkeladen',
'Deli & Specialty': 'Feinkost & Spezialitäten',
'Fashion & Clothing': 'Mode & Bekleidung',
'Electronics': 'Elektronik',
'Charity Shop': 'Secondhand-Laden',
@ -826,18 +835,18 @@ const de: Translations = {
'Bookshop': 'Buchhandlung',
'Pet Shop': 'Tierhandlung',
'Sports & Outdoor': 'Sport & Outdoor',
'Newsagent': 'Zeitungsh\u00E4ndler',
'Newsagent': 'Zeitungshändler',
'Department Store': 'Kaufhaus',
'Gift & Hobby': 'Geschenke & Hobby',
'Specialist Shop': 'Fachgesch\u00E4ft',
'Specialist Shop': 'Fachgeschäft',
'Hairdresser & Beauty': 'Friseur & Kosmetik',
'Gym & Fitness': 'Fitnessstudio',
'Dry Cleaner & Laundry': 'Reinigung & W\u00E4scherei',
'Dry Cleaner & Laundry': 'Reinigung & Wäscherei',
'Car Services': 'Autoservice',
'Post Office': 'Postamt',
'Vet & Pet Care': 'Tierarzt & Tierpflege',
'Bank': 'Bank',
'Travel Agent': 'Reiseb\u00FCro',
'Travel Agent': 'Reisebüro',
'Police': 'Polizei',
'Fire Station': 'Feuerwache',
'Ambulance Station': 'Rettungswache',
@ -849,18 +858,18 @@ const de: Translations = {
'Physiotherapy': 'Physiotherapie',
'Counselling & Therapy': 'Beratung & Therapie',
'Care Home': 'Pflegeheim',
'Medical & Mobility': 'Medizintechnik & Mobilit\u00E4t',
'Medical & Mobility': 'Medizintechnik & Mobilität',
'Museum': 'Museum',
'Gallery': 'Galerie',
'Library': 'Bibliothek',
'Place of Worship': 'Gebetsst\u00E4tte',
'Place of Worship': 'Gebetsstätte',
'Arts Centre': 'Kunstzentrum',
'Zoo': 'Zoo',
'Tourist Attraction': 'Touristenattraktion',
'School': 'Schule',
'Hotel': 'Hotel',
'Local Business': 'Lokales Gesch\u00E4ft',
'Offices': 'B\u00FCros',
'Local Business': 'Lokales Geschäft',
'Offices': 'Büros',
'EV Charging': 'E-Ladestation',
'Fuel Station': 'Tankstelle',
'Community Centre': 'Gemeindezentrum',
@ -868,7 +877,7 @@ const de: Translations = {
// ─ Suffixes (used in formatters) ─
'/mo': '/Monat',
'/yr': '/Jahr',
' sqm': ' m\u00B2',
' sqm': ' m²',
' km': ' km',
' m': ' m',
' dB': ' dB',