From 08069d6ea430428c1175d3bfee49bfe6a9f38c8c Mon Sep 17 00:00:00 2001 From: rene Date: Sat, 30 May 2026 13:30:01 +0200 Subject: [PATCH] =?UTF-8?q?Wetter:=20deutsche=20Conditions=20+=20Asphalt-L?= =?UTF-8?q?abel=20entr=C3=BCmpelt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WeatherCondition deutsch: 'Mostly Clear' → 'Überwiegend klar' etc. - AsphaltLevel.label nur noch ein Wort (Heiß/Warm/Gefährlich), die safety-Info wandert in den advice-Text → Title bleibt einzeilig --- BanYaroGo/Support/GassiWetter.swift | 12 ++++----- BanYaroGo/Views/WetterView.swift | 42 ++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/BanYaroGo/Support/GassiWetter.swift b/BanYaroGo/Support/GassiWetter.swift index 50bfdf4..93d8c37 100644 --- a/BanYaroGo/Support/GassiWetter.swift +++ b/BanYaroGo/Support/GassiWetter.swift @@ -20,18 +20,18 @@ enum GassiWetter { var label: String { switch self { case .safe: return "Unbedenklich" - case .warm: return "Warm — kurze Runden ok" - case .hot: return "Heiß — Pfoten verbrennen" - case .danger: return "Gefährlich — gar nicht laufen" + case .warm: return "Warm" + case .hot: return "Heiß" + case .danger: return "Gefährlich" } } var advice: String? { switch self { case .safe: return nil - case .warm: return "Schatten suchen, Pausen einlegen." - case .hot: return "Gras oder Schatten bevorzugen — Asphalt vermeiden." - case .danger: return "Nur Morgens/Abends rausgehen, mittags drinnen." + case .warm: return "Schatten suchen, Pausen einlegen — kurze Runden sind ok." + case .hot: return "Pfoten verbrennen. Gras oder Schatten bevorzugen, Asphalt meiden." + case .danger: return "Pfoten verbrennen sofort. Nur früh morgens oder abends rausgehen." } } } diff --git a/BanYaroGo/Views/WetterView.swift b/BanYaroGo/Views/WetterView.swift index 3598049..57fd58f 100644 --- a/BanYaroGo/Views/WetterView.swift +++ b/BanYaroGo/Views/WetterView.swift @@ -141,7 +141,7 @@ struct WetterView: View { .symbolRenderingMode(.multicolor) .font(.system(size: 56)) VStack(alignment: .leading, spacing: 2) { - Text(day.condition.description) + Text(germanCondition(day.condition)) .font(.headline) HStack(spacing: 6) { Text("\(Int(metrics.tempMax.rounded()))°").font(.title3.bold().monospacedDigit()) @@ -287,6 +287,46 @@ struct WetterView: View { // MARK: - Loading + private func germanCondition(_ condition: WeatherCondition) -> String { + switch condition { + case .clear: return "Klar" + case .mostlyClear: return "Überwiegend klar" + case .partlyCloudy: return "Teilweise bewölkt" + case .mostlyCloudy: return "Überwiegend bewölkt" + case .cloudy: return "Bedeckt" + case .foggy: return "Nebel" + case .haze: return "Dunst" + case .smoky: return "Rauch in der Luft" + case .drizzle: return "Nieselregen" + case .freezingDrizzle: return "Gefrierender Nieselregen" + case .rain: return "Regen" + case .heavyRain: return "Starker Regen" + case .freezingRain: return "Gefrierender Regen" + case .sunShowers: return "Sonnige Schauer" + case .snow: return "Schnee" + case .heavySnow: return "Starker Schnee" + case .flurries: return "Schneetreiben" + case .blowingSnow: return "Schneeverwehung" + case .blizzard: return "Schneesturm" + case .sleet: return "Schneeregen" + case .hail: return "Hagel" + case .wintryMix: return "Schneeregen-Mix" + case .thunderstorms: return "Gewitter" + case .strongStorms: return "Starkes Gewitter" + case .scatteredThunderstorms: return "Vereinzelte Gewitter" + case .isolatedThunderstorms: return "Einzelne Gewitter" + case .tropicalStorm: return "Tropensturm" + case .hurricane: return "Hurrikan" + case .hot: return "Hitze" + case .frigid: return "Eisige Kälte" + case .windy: return "Windig" + case .breezy: return "Leichte Brise" + case .blowingDust: return "Staubsturm" + case .sunFlurries: return "Schneetreiben" + default: return condition.description + } + } + private func loadWeather() async { guard let coord = location.coordinate else { return } isLoading = true